poster.tex 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. \documentclass[portrait,color=UCLmidgreen,margin=1.5cm,bannerheight=8cm,logoheight=2.5cm]{uclposter}
  2. \usepackage{tikz}
  3. \usepackage[scaled=1.2]{helvet}
  4. \renewcommand\familydefault{\sfdefault}
  5. \usepackage[T1]{fontenc}
  6. \usepackage[raster]{tcolorbox}
  7. \usepackage{grid-system}
  8. \title{Performance characterisation of 8-bit RISC and OISC architectures}
  9. %\affil[1]{UCL Electronic And Electrical Engineering}
  10. \begin{document}
  11. %\tikz\node[opacity=0.3,inner sep=0]{\includegraphics[height=\paperheight,width=\paperwidth]{background.jpg}}
  12. %\tikz[remember picture,overlay] \node[opacity=0.3,outer sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{background.jpg}};
  13. \maketitle
  14. \tcbset{colframe=UCLmidgreen,center title,fonttitle=\bfseries\Large,toptitle=1.5mm,bottomtitle=1.5mm,boxrule=0.8mm,sharp corners,nobeforeafter}
  15. \definecolor{c1}{HTML}{ff7568}
  16. \definecolor{c2}{HTML}{8cbfff}
  17. \definecolor{c3}{HTML}{a6ddb7}
  18. \newcommand{\strutm}{\rule[-.15\baselineskip]{0pt}{\baselineskip}}
  19. \begin{tcolorbox}[title=Introduction]
  20. \begin{Row}\begin{Cell}{2}
  21. \textbf{Motivation:}\\
  22. RISC (Reduced Instruction Set Computer) architecture is usually chosen over CISC (Complex Instruction Set Computer) due to simplicity and lower power consumption. This project one step further and investigates OISC (One Instruction Set Computer) MOVE variant architecture to determinate if it can achieve even better performance.
  23. \end{Cell}\begin{Cell}{2}
  24. \textbf{About:}\\
  25. The aim of this project design 2 novel RISC and OSIC architectures with following points:
  26. \begin{description}
  27. \item[$\bullet$] Design processors such that could be used for microcontroller application (like 8-bit Atmel AVR)
  28. \item[$\bullet$] Use same design criteria to make fair comparison
  29. \item[$\bullet$] Implement processors on FPGA board
  30. \item[$\bullet$] Design a assembly compiler and common functions
  31. \end{description}
  32. \end{Cell}\begin{Cell}{1}
  33. \textbf{Decided design criteria:}
  34. \begin{description}
  35. \item[$\bullet$] Minimal instruction size
  36. \item[$\bullet$] Minimalistic design
  37. \item[$\bullet$] 8bit data bus width
  38. \item[$\bullet$] 16bit ROM address width
  39. \item[$\bullet$] 24bit RAM address width
  40. \item[$\bullet$] 16bit RAM word size
  41. \end{description}
  42. \end{Cell}\end{Row}
  43. \end{tcolorbox}
  44. \begin{multicols}{2}
  45. \begin{tcolorbox}[title=RISC Architecture]
  46. Microarchitecture inspired by MIPS. Separate control and datapath.\\[5mm]
  47. \includegraphics[width=\linewidth]{../resources/risc.eps}
  48. \begin{center}
  49. \textit{Figure 1: RISC architecture general block diagram}
  50. \end{center}
  51. \end{tcolorbox}
  52. \begin{tcolorbox}[detach title,beforeafter skip=15pt]
  53. \textbf{Machine code}\\
  54. RISC has three types of instructions - with 2, 1 and 0 operands maximising space efficiency. Each type can have from 0 to 3 additional immediate bytes.
  55. \begin{gather*}
  56. \scalebox{0.8}{bit index:}
  57. \overbracket{
  58. \underbrace{
  59. \colorbox{c1}{\strutm0}\,
  60. \colorbox{c1}{\strutm1}\,
  61. \colorbox{c1}{\strutm2}\,
  62. \colorbox{c1}{\strutm3}
  63. }_\text{op. code}
  64. \underbrace{
  65. \colorbox{c2}{\strutm4}\,
  66. \colorbox{c2}{\strutm5}
  67. }_\text{dst.}
  68. \underbrace{
  69. \colorbox{c3}{\strutm6}\,
  70. \colorbox{c3}{\strutm7}
  71. }_\text{src.}
  72. }^\text{2\ operands}
  73. \quad
  74. \overbracket{
  75. \underbrace{
  76. \colorbox{c1}{\strutm0}\,
  77. \colorbox{c1}{\strutm1}\,
  78. \colorbox{c1}{\strutm2}\,
  79. \colorbox{c1}{\strutm3}
  80. }_\text{op. code}
  81. \underbrace{
  82. \colorbox{c2}{\strutm4}\,
  83. \colorbox{c2}{\strutm5}
  84. }_\text{dst.}
  85. \underbrace{
  86. \colorbox{c1}{\strutm6}\,
  87. \colorbox{c1}{\strutm7}
  88. }_\text{op. c.}
  89. }^\text{1\ operand}
  90. \quad
  91. \overbracket{
  92. \underbrace{
  93. \colorbox{c1}{\strutm0}\,
  94. \colorbox{c1}{\strutm1}\,
  95. \colorbox{c1}{\strutm2}\,
  96. \colorbox{c1}{\strutm3}\,
  97. \colorbox{c1}{\strutm4}\,
  98. \colorbox{c1}{\strutm5}\,
  99. \colorbox{c1}{\strutm6}\,
  100. \colorbox{c1}{\strutm7}
  101. }_\text{operation code}
  102. }^\text{0\ operands}
  103. \end{gather*}
  104. \\[-13mm]
  105. \begin{multicols}{2}
  106. \textbf{45 Total instructions:}
  107. \begin{description}
  108. \item[$\bullet$] \textbf{8 }\hspace*{0.5cm} 2-operand instructions
  109. \item[$\bullet$] \textbf{28}\hspace*{0.5cm} 1-operand instructions
  110. \item[$\bullet$] \textbf{9 }\hspace*{0.5cm} 0-operand instructions
  111. \end{description}
  112. \columnbreak
  113. \begin{description}
  114. \item[$\bullet$] \textbf{4}\hspace*{0.2cm} General purpose registers
  115. \item[$\bullet$] Hardware stack
  116. \item[$\bullet$] Hardware multiply / divide
  117. \item[$\bullet$] Hardware call / return
  118. \end{description}
  119. \end{multicols}
  120. \end{tcolorbox}
  121. \columnbreak
  122. \begin{tcolorbox}[title=OISC Architecture]
  123. Common data and instruction bus. No control block. Data is moved around using single MOVE instruction by enabling buffers connected to data bus.\\[5mm]
  124. \includegraphics[width=\linewidth]{../resources/oisc.eps}
  125. \begin{center}
  126. \textit{Figure 2: OISC architecture general block diagram}
  127. \end{center}
  128. \end{tcolorbox}
  129. \begin{tcolorbox}[detach title,beforeafter skip=26pt]
  130. \textbf{Machine code}\\
  131. OISC instruction are fixed 13bit width, 1 bit to set source as immediate value, 4bits for destination address and 8bit for source or immediate.
  132. \\
  133. \begin{gather*}
  134. \scalebox{0.8}{bit index:}
  135. \underbrace{
  136. \colorbox{c1}{\strutm0}
  137. }_\text{imm.}
  138. \underbrace{
  139. \colorbox{c2}{\strutm1}\,
  140. \colorbox{c2}{\strutm2}\,
  141. \colorbox{c2}{\strutm3}\,
  142. \colorbox{c2}{\strutm4}\,
  143. }_\text{destination}
  144. \underbrace{
  145. \colorbox{c3}{\strutm5}\,
  146. \colorbox{c3}{\strutm6}\,
  147. \colorbox{c3}{\strutm7}\,
  148. \colorbox{c3}{\strutm8}\,
  149. \colorbox{c3}{\strutm9}\,
  150. \colorbox{c3}{\strutm10}\,
  151. \colorbox{c3}{\strutm11}\,
  152. \colorbox{c3}{\strutm12}
  153. }_\text{source}
  154. \end{gather*}
  155. \\[-13mm]
  156. \begin{multicols}{2}
  157. \begin{description}
  158. \item[$\bullet$] \textbf{15}\hspace*{0.2cm} Destination addresses
  159. \item[$\bullet$] \textbf{41}\hspace*{0.2cm} Source addresses
  160. \item[$\bullet$] \textbf{2}\hspace*{0.2cm} General purpose registers
  161. \columnbreak
  162. \item[$\bullet$] Hardware stack
  163. \item[$\bullet$] Hardware multiply / divide
  164. \item[$\bullet$] Software call / return
  165. \end{description}
  166. \end{multicols}
  167. \end{tcolorbox}
  168. \end{multicols}
  169. \begin{tcolorbox}[title=Results]
  170. \begin{multicols}{3}
  171. \textbf{Implemented functions in assembly:}
  172. \begin{description}
  173. \item[$\bullet$] Print Strings, values in Binary, Hexadecimal and Decimal (8 and 16bit)
  174. \item[$\bullet$] 16bit multiplication
  175. \item[$\bullet$] 16bit division
  176. \item[$\bullet$] 16bit modulus
  177. \item[$\bullet$] Sieve of Atkins (prime number calculator, up to 16bit number)
  178. \end{description}
  179. \vfill
  180. \begin{center}
  181. \renewcommand{\arraystretch}{1.5}
  182. \begin{tabular}{ | l | c | c | c | }
  183. \hline
  184. & \textbf{Baseline} & \textbf{RISC} & \textbf{OISC} \\ \hline
  185. Logic Elements & 293 & 1771 & 1705 \\ \hline
  186. Registers & 169 & 602 & 724 \\ \hline
  187. \end{tabular}
  188. \\[2mm]
  189. \textit{Table 1: Number of FPGA resources}
  190. \end{center}
  191. \columnbreak
  192. \includegraphics[width=\linewidth]{../tests/cycles.eps}
  193. \begin{center}
  194. \textit{Figure 3: Simulated results of cycles that taken to perform function. }
  195. \end{center}
  196. \columnbreak
  197. \includegraphics[width=\linewidth]{../tests/power.eps}
  198. \begin{center}
  199. \textit{Figure 4: Measured power of processors when implemented on FPGA, running 16bit multiplication function in loop.}
  200. \end{center}
  201. \end{multicols}
  202. % \renewcommand{\arraystretch}{1.5}
  203. % \begin{Row}\begin{Cell}{2}
  204. % \textbf{Implemented functions in assembly:}
  205. % \begin{description}
  206. % \item[$\bullet$] Print ASCII, Binary, Hexadecimal and Decimal (8 and 16bit)
  207. % \item[$\bullet$] 16bit multiplication
  208. % \item[$\bullet$] 16bit division -
  209. % \item[$\bullet$] 16bit modulus
  210. % \item[$\bullet$] Sieve of Atkins (prime number calculator)
  211. % \end{description}
  212. % \end{Cell}\begin{Cell}{2}
  213. % \textbf{Number of cycles per function:}
  214. % \begin{center}
  215. % \begin{tabular}{ | l | c | c | }
  216. % \hline
  217. % \textbf{Function} & \textbf{RISC} & \textbf{OISC} \\ \hline
  218. % 16bit division \texttt{FFFFh/0001h} & - & 963 \\ \hline
  219. % 16bit division \texttt{FFFFh/FFFFh} & - & 663 \\ \hline
  220. % 16bit division \texttt{0001h/FFFFh} & - & 598 \\ \hline
  221. % 16bit modulus \texttt{FFFFh\%0001h} & - & 1076 \\ \hline
  222. % 16bit modulus \texttt{FFFFh\%FFFFh} & - & 99 \\ \hline
  223. % 16bit modulus \texttt{0001h\%FFFFh} & - & 49 \\ \hline
  224. % 16bit multiply & - & 55 \\ \hline
  225. % \end{tabular}
  226. % \end{center}
  227. %
  228. % \textbf{Number of FPGA resources:}
  229. % \begin{center}
  230. % \begin{tabular}{ | l | c | c | c | }
  231. % \hline
  232. % & \textbf{Baseline} & \textbf{RISC} & \textbf{OISC} \\ \hline
  233. % Logic Elements & 293 & 1771 & 1705 \\ \hline
  234. % Registers & 169 & 602 & 724 \\ \hline
  235. % \end{tabular}
  236. % \end{center}
  237. % \textbf{Power consumption (mW):}
  238. % \begin{center}
  239. % \begin{tabular}{ | c | c | c | }
  240. % \hline
  241. % \textbf{Baseline} & \textbf{RISC} & \textbf{OISC} \\ \hline
  242. % 359.09 $\pm$ 0.245 & 360.851 $\pm$ 0.239 & 360.732 $\pm$ 0.223 \\ \hline
  243. % \end{tabular}
  244. % \end{center}
  245. % \end{Cell}\begin{Cell}{2}
  246. % \includegraphics[width=\linewidth]{../tests/power.eps}
  247. %
  248. % \end{Cell}\end{Row}
  249. \end{tcolorbox}
  250. \begin{Row}\begin{Cell}{1}
  251. \begin{tcolorbox}[title=Conclusion]
  252. \begin{description}
  253. \item[$\bullet$] Processor achieved similar performance in power consumption and FPGA resources
  254. \item[$\bullet$] OISC seem to be \textbf{easier} to implement and expand, easily enabling \textbf{pipelining} with hazard control implemented by software.
  255. \item[$\bullet$] OISC takes more instructions to perform same function.
  256. \item[$\bullet$] OISC assembly is more difficult to write.
  257. \item[$\bullet$] Further research is need to investigate benefits of multi-data-bus OISC design.
  258. \\[1mm]
  259. \end{description}
  260. \end{tcolorbox}
  261. \end{Cell}\begin{Cell}{2}
  262. \begin{tcolorbox}[title=Future work]
  263. \begin{multicols}{2}
  264. \textbf{Write more tests:}
  265. \begin{description}
  266. \item[\textendash] Test Spongent (crypto-hashing) algorithm
  267. \item[\textendash] Array and matrix calculations (sorting, search, calculating mean, etc.)
  268. \item[\textendash] Other minimalistic cryptographic functions
  269. \end{description}
  270. \textbf{Short term work:}
  271. \begin{enumerate}
  272. \item Investigate critical path and maximum frequencies
  273. \item Find power activity factor
  274. \item Implement OISC emulator for easier debugging
  275. \end{enumerate}
  276. \columnbreak
  277. \textbf{Future research:}
  278. \begin{enumerate}
  279. \item Implement multiple data \& instruction buses for OISC
  280. \item Write higher level language compiler (such as BASIC or C)
  281. \item Expand to 16bit / 32bit data bus
  282. \item Compare to commercial Atmel AVR / ARM / MIPS architectures
  283. \end{enumerate}
  284. \end{multicols}
  285. \end{tcolorbox}
  286. \end{Cell}\end{Row}
  287. \end{document}