Initial work.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 15 Sep 2016 13:24:46 +0000 (14:24 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 15 Sep 2016 13:24:46 +0000 (14:24 +0100)
23 files changed:
2016-redhat/.gitignore [new file with mode: 0644]
2016-redhat/0000-introduction.html [new file with mode: 0644]
2016-redhat/1000-cores.html [new file with mode: 0644]
2016-redhat/2000-what-is-riscv.html [new file with mode: 0644]
2016-redhat/2010-instructions.html [new file with mode: 0644]
2016-redhat/2020-boring.html [new file with mode: 0644]
2016-redhat/2030-specifications.html [new file with mode: 0644]
2016-redhat/2040-open-source-cores.html [new file with mode: 0644]
2016-redhat/2050-chisel.html [new file with mode: 0644]
2016-redhat/2060-emulators.html [new file with mode: 0644]
2016-redhat/2070-toolchain.html [new file with mode: 0644]
2016-redhat/2080-external-groups.html [new file with mode: 0644]
2016-redhat/2090-external-companies.html [new file with mode: 0644]
2016-redhat/2500-whats-missing.html [new file with mode: 0644]
2016-redhat/bashrc [new file with mode: 0644]
2016-redhat/code.js [new file with mode: 0644]
2016-redhat/cores.png [new file with mode: 0644]
2016-redhat/cores.xcf [new file with mode: 0644]
2016-redhat/notes.txt [new file with mode: 0644]
2016-redhat/redhat.png [new file with mode: 0644]
2016-redhat/specs.png [new file with mode: 0644]
2016-redhat/specs.xcf [new file with mode: 0644]
2016-redhat/style.css [new file with mode: 0644]

diff --git a/2016-redhat/.gitignore b/2016-redhat/.gitignore
new file mode 100644 (file)
index 0000000..317d723
--- /dev/null
@@ -0,0 +1,4 @@
+*~
+
+/bindings
+/history
diff --git a/2016-redhat/0000-introduction.html b/2016-redhat/0000-introduction.html
new file mode 100644 (file)
index 0000000..ed38404
--- /dev/null
@@ -0,0 +1,27 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<div id="titlepage">
+  <p class="title">
+    RISC-V &mdash; <br/>
+    <small>free and open Instruction Set Architecture</small>
+  </p>
+  <p>
+    Monday 26th September 2016 <br/>
+    <author>Richard W.M. Jones <br/>
+      <small>&lt; rjones @ redhat.com &gt;</small>
+  </author></p>
+  <p style="text-align: left;">
+    <a href="https://riscv.org/">RISC-V</a> <i>("Risc Five")</i>
+    is <a href="https://en.wikipedia.org/wiki/RISC-V">a new
+    Instruction Set Architecture (ISA) with a BSD license</a> which
+    aims to become the standard open architecture for industry.
+  </p>
+  <p style="text-align: left;">
+    This talk covers: What precisely is offered by RISC-V?
+    <a href="https://fedoraproject.org/wiki/Architectures/RISC-V">Bootstrapping
+    Fedora on RISC-V</a>.  The state of RISC-V software development
+    and the community.  Are open source ISAs in Red Hat's future?
+  </p>
+</div>
diff --git a/2016-redhat/1000-cores.html b/2016-redhat/1000-cores.html
new file mode 100644 (file)
index 0000000..a7c7f6d
--- /dev/null
@@ -0,0 +1,7 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>It's real!</h1>
+
+<img src="cores.png"/>
diff --git a/2016-redhat/2000-what-is-riscv.html b/2016-redhat/2000-what-is-riscv.html
new file mode 100644 (file)
index 0000000..5ed1464
--- /dev/null
@@ -0,0 +1,19 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> An open source instruction set
+<li> 32-, 64- and 128-bit versions
+<li> RV64G ≡ RV64IMAFD
+  <ul>
+    <li> <b>I</b>nteger [required]
+    <li> <b>M</b>ultiply/divide
+    <li> <b>A</b>tomics
+    <li> single-precision <b>F</b>loat
+    <li> <b>D</b>ouble-precision float
+    <li> <b>G</b>eneral purpose ≡ IMAFD
+  </ul>
+</ul>
diff --git a/2016-redhat/2010-instructions.html b/2016-redhat/2010-instructions.html
new file mode 100644 (file)
index 0000000..248e382
--- /dev/null
@@ -0,0 +1,32 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<pre>
+00370613   addi    a2,a4,3
+02c13c23   sd      a2,56(sp)
+02d108a3   sb      a3,49(sp)
+00274703   lbu     a4,2(a4)
+03d00793   li      a5,61
+3cf70863   beq     a4,a5,1ce28 &lt;main+0x1d68&gt;
+000165b7   lui     a1,0x16
+c3058593   addi    a1,a1,-976 # 15c30 &lt;__mon_yday+0x24d8&gt;
+00500613   li      a2,5
+00000513   li      a0,0
+964fe0ef   jal     1abd0 &lt;dcgettext@plt&gt;
+00050613   mv      a2,a0
+00000593   li      a1,0
+00000513   li      a0,0
+f75fd0ef   jal     1a9f0 &lt;error@plt&gt;
+9901b503   ld      a0,-1648(gp) # 16bd8 &lt;color_buf&gt;
+accfe0ef   jal     1ad50 &lt;free@plt&gt;
+9981b503   ld      a0,-1640(gp) # 16be0 &lt;color_ext_list&gt;
+00050a63   beqz    a0,1caa0 &lt;main+0x19e0&gt;
+02053983   ld      s3,32(a0)
+abcfe0ef   jal     1ad50 &lt;free@plt&gt;
+00098513   mv      a0,s3
+ff1ff06f   j       1ca8c &lt;main+0x19cc&gt;
+9a0180a3   sb      zero,-1631(gp) # 16be9 &lt;print_with_color&gt;
+</pre>
diff --git a/2016-redhat/2020-boring.html b/2016-redhat/2020-boring.html
new file mode 100644 (file)
index 0000000..6da920b
--- /dev/null
@@ -0,0 +1,15 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<blockquote>
+<i>“[RISC-V]'s not supposed to be "different from other architectures".
+It's supposed to be as familiar as possible to compiler writers and
+CPU designers, minimizing novelty and surprises and maximizing
+precedent so that it can become the <b>Standard Boring ISA</b>.”</i> <br/>
+</blockquote>
+<p style="text-align: right; margin-right: 3em;">
+&mdash; Stefan O'Rear on <a href="https://groups.google.com/a/groups.riscv.org/forum/#!forum/isa-dev">the isa-dev mailing list</a>
+</p>
diff --git a/2016-redhat/2030-specifications.html b/2016-redhat/2030-specifications.html
new file mode 100644 (file)
index 0000000..fe7bbdd
--- /dev/null
@@ -0,0 +1,7 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<img src="specs.png"/>
diff --git a/2016-redhat/2040-open-source-cores.html b/2016-redhat/2040-open-source-cores.html
new file mode 100644 (file)
index 0000000..74484a7
--- /dev/null
@@ -0,0 +1,12 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> Rocket (in-order, single-issue)
+<li> BOOM (OOO, up to quad issue)
+<li> Z-scale (similar to ARM Cortex M0-M4)
+<li> Educational
+</ul>
diff --git a/2016-redhat/2050-chisel.html b/2016-redhat/2050-chisel.html
new file mode 100644 (file)
index 0000000..938e9a9
--- /dev/null
@@ -0,0 +1,27 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<pre style="font-size: smaller;">
+val id_illegal_insn = !id_ctrl.legal ||
+    id_ctrl.div &amp;&amp; !csr.io.status.isa('m'-'a') ||
+    id_ctrl.amo &amp;&amp; !csr.io.status.isa('a'-'a') ||
+    id_ctrl.fp &amp;&amp; !(csr.io.status.fs.orR &amp;&amp; csr.io.status.isa('f'-'a')) ||
+    id_ctrl.dp &amp;&amp; !csr.io.status.isa('d'-'a') ||
+    ibuf.io.inst(0).bits.rvc &amp;&amp; !csr.io.status.isa('c'-'a') ||
+    id_ctrl.rocc &amp;&amp; !(csr.io.status.xs.orR &amp;&amp; csr.io.status.isa('x'-'a'))
+// stall decode for fences (now, for AMO.aq; later, for AMO.rl and FENCE)
+val id_amo_aq = id_inst(0)(26)
+val id_amo_rl = id_inst(0)(25)
+val id_fence_next = id_ctrl.fence || id_ctrl.amo &amp;&amp; id_amo_rl
+val id_mem_busy = !io.dmem.ordered || io.dmem.req.valid
+val id_rocc_busy = Bool(usingRoCC) &amp;&amp;
+    (io.rocc.busy || ex_reg_valid &amp;&amp; ex_ctrl.rocc ||
+     mem_reg_valid &amp;&amp; mem_ctrl.rocc || wb_reg_valid &amp;&amp; wb_ctrl.rocc)
+id_reg_fence := id_fence_next || id_reg_fence &amp;&amp; id_mem_busy
+val id_do_fence = id_rocc_busy &amp;&amp; id_ctrl.fence ||
+    id_mem_busy &amp;&amp; (id_ctrl.amo &amp;&amp; id_amo_aq || id_ctrl.fence_i || id_reg_fence
+                            &amp;&amp; (id_ctrl.mem || id_ctrl.rocc) || id_csr_en)
+</pre>
diff --git a/2016-redhat/2060-emulators.html b/2016-redhat/2060-emulators.html
new file mode 100644 (file)
index 0000000..5e002f1
--- /dev/null
@@ -0,0 +1,10 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> QEMU (3 forks!  none upstream!)
+<li> Spike
+</ul>
diff --git a/2016-redhat/2070-toolchain.html b/2016-redhat/2070-toolchain.html
new file mode 100644 (file)
index 0000000..f26ac21
--- /dev/null
@@ -0,0 +1,12 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> Linux Kernel (forked, 3.14 &amp; 4.1)
+<li> binutils (forked, 2.26, 2.27)
+<li> GCC (forked, 6.1.0, 6.2.0)
+<li> glibc (forked ...)
+</ul>
diff --git a/2016-redhat/2080-external-groups.html b/2016-redhat/2080-external-groups.html
new file mode 100644 (file)
index 0000000..0e0843f
--- /dev/null
@@ -0,0 +1,13 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> LowRISC <i>"Raspberry Pi for grown-ups"</i>
+<li> SiFive
+<li> Numerous FPGA implementations
+<li> Lots of university research groups
+<li> Lots of small commercial development groups
+</ul>
diff --git a/2016-redhat/2090-external-companies.html b/2016-redhat/2090-external-companies.html
new file mode 100644 (file)
index 0000000..666473d
--- /dev/null
@@ -0,0 +1,18 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What is RISC-V?</h1>
+
+<ul>
+<li> NVidia
+<li> Google
+<li> AMD
+<li> HPE
+<li> IBM
+<li> Mellanox
+<li> Microsemi
+<li> Microsoft
+<li> Western Digital
+<li> and more
+</ul>
diff --git a/2016-redhat/2500-whats-missing.html b/2016-redhat/2500-whats-missing.html
new file mode 100644 (file)
index 0000000..0ed1e72
--- /dev/null
@@ -0,0 +1,20 @@
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>What missing from RISC-V?</h1>
+
+<ul>
+<li> Interrupt controller (but coming soon)
+<li> Serial port
+<li> Ethernet
+<li> Display
+<li> SATA
+<li> DDR4
+<li> PCI (but SiFive have something)
+<li> etc etc etc
+</ul>
+
+<p>
+Not enough to make a real processor or SoC
+</p>
diff --git a/2016-redhat/bashrc b/2016-redhat/bashrc
new file mode 100644 (file)
index 0000000..4c6a3c6
--- /dev/null
@@ -0,0 +1,17 @@
+# -*- shell-script -*-
+
+# Colour ls.
+if [ -f /etc/profile.d/colorls.sh ]; then . /etc/profile.d/colorls.sh; fi
+
+# Fancy prompt colours (see
+# https://wiki.archlinux.org/index.php/Color_Bash_Prompt)
+promptcol='\e[0;32m'      ;# colour for the prompt
+commandcol='\e[1;31m'     ;# colour for the typed command
+outputcol='\e[0m'         ;# colour for command output
+
+export PS1="\n\[$promptcol\]\$ \[$commandcol\]"
+
+trap 'echo -ne "$outputcol"' DEBUG
+
+# Load key bindings (if any).
+bind -f $talkdir/bindings
diff --git a/2016-redhat/code.js b/2016-redhat/code.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/2016-redhat/cores.png b/2016-redhat/cores.png
new file mode 100644 (file)
index 0000000..19ccfc4
Binary files /dev/null and b/2016-redhat/cores.png differ
diff --git a/2016-redhat/cores.xcf b/2016-redhat/cores.xcf
new file mode 100644 (file)
index 0000000..f812c1b
Binary files /dev/null and b/2016-redhat/cores.xcf differ
diff --git a/2016-redhat/notes.txt b/2016-redhat/notes.txt
new file mode 100644 (file)
index 0000000..5ea3c55
--- /dev/null
@@ -0,0 +1,74 @@
+Talk contents:
+
+ - What precisely is offered by RISC-V?
+
+ - Bootstrapping Fedora.
+
+ - The state of RISC-V software development and the community.
+
+ - Are open source ISAs in Red Hat's future?
+
+----------------------------------------------------------------------
+
+Instructions:
+
+fixed size 32 bit instructions
+compressed instructions extension
+32 general purpose registers
+32 floating point registers (extension)
+zero register
+influenced by MIPS
+proven to be patent-free
+
+Boring:
+
+Micro-architecture independent as far as possible
+Micro-op fusion
+No register windows, branch delay slots etc
+Royalty free, no licensing
+
+Specifications:
+
+  User spec 2.0 -> 2.1
+  Priv spec 1.7 -> 1.9/2.0
+
+4 open source core designs, Rocket, BOOM and two others
+  Chisel generates Verilog
+  Includes cache hierarchy
+  Includes coherence between L2 caches
+  Parameterized
+  Targets C++ (simulation), FPGA or ASIC
+  Proprietary tools needed if you go FPGA or ASIC route
+
+Emulators
+
+Toolchain
+
+External projects:
+  LowRISC = "RPi for grown-ups"
+  SiFive
+  Many FPGA implementations
+  Lots of research groups
+  Lots of small dev groups
+
+Some large companies looking: NVidia, Google, AMD, HPE, IBM, Mellanox,
+Microsemi, Microsoft, WD, ...
+
+Missing bits:
+  PLIC (coming)
+  any other sort of hardware, serial, ethernet, display, SATA, DDR, ...
+  PCI (SiFive have done some work)
+  much of this is filled in with proprietary "IP"
+  "Minion cores"
+
+----------------------------------------------------------------------
+
+Fedora
+
+----------------------------------------------------------------------
+
+Software development and the community
+
+----------------------------------------------------------------------
+
+Red Hat
diff --git a/2016-redhat/redhat.png b/2016-redhat/redhat.png
new file mode 100644 (file)
index 0000000..f50076a
Binary files /dev/null and b/2016-redhat/redhat.png differ
diff --git a/2016-redhat/specs.png b/2016-redhat/specs.png
new file mode 100644 (file)
index 0000000..37411cc
Binary files /dev/null and b/2016-redhat/specs.png differ
diff --git a/2016-redhat/specs.xcf b/2016-redhat/specs.xcf
new file mode 100644 (file)
index 0000000..fbf6ad6
Binary files /dev/null and b/2016-redhat/specs.xcf differ
diff --git a/2016-redhat/style.css b/2016-redhat/style.css
new file mode 100644 (file)
index 0000000..4a33b8f
--- /dev/null
@@ -0,0 +1,67 @@
+/* Red Hat red is rgb(204,0,0). */
+
+body {
+    background: url(redhat.png) no-repeat;
+    background-position: 98% 0;
+    /* font-size: 28pt; */ /* For max */
+    font-size: 20pt; /* For 1024x768 */
+    /* font-family: liberation, helvetica; */
+    font-family: helvetica;
+}
+
+body td, body th { /* why?? */
+    font-size: 24pt;
+    padding-bottom: 8px;
+}
+
+h1 {
+    color: rgb(204,0,0);
+    /*font-size: 48px;*/
+    font-size: 40px;
+    top: 8;
+    left: 0;
+    border-bottom: 2px solid rgb(204,0,0);
+}
+
+b {
+    color: rgb(204,0,0);
+}
+
+div#titlepage {
+    margin-top: 100px;
+    text-align: center;
+}
+
+div#titlepage p.title {
+    color: rgb(204,0,0);
+    font-weight: bold;
+    font-size: 48px;
+}
+
+div#titlepage author {
+    font-size: 36px;
+}
+
+/* Code */
+pre.code {
+    margin-left: 1em;
+    background: #eee;
+}
+
+code {
+    color: rgb(204,0,0);
+}
+
+/* Bullet points */
+li {
+    padding-bottom: 16px;
+}
+
+/* Logo */
+img#fish {
+    position: absolute;
+    top: 128px;
+    right: 32px;
+    width: 200px;
+    /*height: 256px;*/
+}
\ No newline at end of file