2 % Yes: some of them are obvious, but it does no harm.
4 % In the main documentation text I have not tagged every use of the glossary
5 % entries below, I have tagged the first in a chapter, or first use for some
6 % number of paragraphs.
8 % Put the definition of terms of the glossary terms in here I did try to keep
9 % in alphabetic order - for easier editing, but then decided that keeping
10 % related terms together helped (in which case put some blank lines
11 % before/after the related items). They will be generated (in the PDF) in
12 % alphabetic order regardless of the order below
14 % To use one do something like: \gls{PowerPC}
15 % Note that the entries are case sensitive.
17 % Having an entry below will not make it appear in the glossary,
18 % it will only appear if it is used, eg: \gls{PowerPC}
21 % GlsName The text that should be used in the document, eg: \gls{GlsName}
22 % GlsText The text that will be shown in the document in place of \gls{GlsName}
23 % GlsName and GlsText can be different but you will probably want
24 % to make them the same.
25 % \newglossaryentry{GlsName}
34 % https://en.wikibooks.org/wiki/LaTeX/Glossary
35 % http://tug.ctan.org/macros/latex/contrib/glossaries/glossariesbegin.pdf
37 % An empty entry to use as a template:
46 % BUG: the glossary entries have a '.' after them that I am not expecting.
48 % BEWARE: the documentation may need to be built more than once for all of the
49 % entries below to appear. This seems to be if an entry is only mentioned in another
52 \newglossaryentry{ALU
}
56 Arithmetic Logic Unit.
57 The part of the computer that does calculations of integer data.
58 Contrast to the
\gls{FPU
}.
59 See:
\href{https://en.wikipedia.org/wiki/Arithmetic_logic_unit
}{Wikipedia
}
63 \newglossaryentry{Binutils
}
67 GNU Binary Utilities is part of the toolchain used for creating and managing
68 binary objects (compiled code).
70 See:
\href{https://www.gnu.org/software/binutils/
}{GNU web site
}
74 \newglossaryentry{CPU
}
78 Central Processing Unit.
79 The brain of a conventional computer that executes general purpose programs.
80 Contrast with
\gls{GPU
} and
\gls{VPU
}.
85 \newglossaryentry{CSR
}
89 Control and Status Register.
90 A special register that records CPU status and processing options.
91 One important option to this project is that the special instructions
92 that we have created will be recognised.
97 \newglossaryentry{FPGA
}
101 Field-programmable gate array.
102 An integrated circuit where the circuitry can be reconfigured.
103 See:
\href{https://en.wikipedia.org/wiki/Field-programmable_gate_array
}{Wikipedia
}
107 \newglossaryentry{FPU
}
112 The part of the computer that does calculations of data in, probably,
\gls{IEEE754
} format.
113 See:
\href{https://en.wikipedia.org/wiki/Floating-point_unit
}{Wikipedia
}
117 \newglossaryentry{FU
}
122 A computer typically has five main functional units:
123 \gls{CPU
}, Input (get data from: keyboard, network, microphone, ...),
124 Output (send data to: screen, network, audio, ...), Memory (RAM, disk, ...) \&
125 Control (coordinates the other FUs).
126 Many of these FUs are built out of smaller FUs.
130 \newglossaryentry{gcc
}
134 \gls{GNU
} Compiler Collection.
135 A popular open source compiler for C (\& related), Fortran, Ada \& Go and able to generate
136 object code for many
\gls{ISA
}s including
\gls{PowerPC
}.
137 See:
\href{https://en.wikipedia.org/wiki/GNU_Compiler_Collection
}{Wikipedia
}
142 \newglossaryentry{GNU
}
146 The GNU project is a large collection of free software.
147 It provides many of the core programs that are used by many
\gls{Linux
} distributions.
148 See:
\href{https://www.gnu.org/
}{GNU website
}
152 \newglossaryentry{GPU
}
156 Graphics processing unit.
157 Special purpose processor optimised for graphics and image generation,
158 often able to run in parallel -- the same instructions on
159 different data at the same time.
160 Contrast with
\gls{CPU
} and
\gls{VPU
}.
161 See:
\href{https://en.wikipedia.org/wiki/Graphics_processing_unit
}{Wikipedia
}
165 \newglossaryentry{ICubeCorpIC3128
}
167 name=ICubeCorp IC3128,
169 A
\gls{SoC
} from ICube that has both
\gls{CPU
} and
\gls{GPU
} on a single chip.
170 See:
\href{https://www.cnx-software.com/
2014/
10/
15/icube-mvp-socs-combine-cpu-and-gpu-into-a-single-unified-processing-unit-upu/
}{CNX Software
}
174 \newglossaryentry{IEEE754
}
178 A popular standard way of representing and manipulating floating point numbers.
179 Initiated by the Institute of Electrical and Electronics Engineers in
1985.
180 Different precisions from
16 to
256 bits are described.
181 See:
\gls{FPU
} \href{https://en.wikipedia.org/wiki/IEEE_754
}{Wikipedia
}
185 \newglossaryentry{IOMMU
}
189 Input Output Memory Management Unit.
190 Mediates between Input/Output devices and main memory mapping virtual
191 addresses to physical ones and, maybe, enforcing protection restrictions.
192 See:
\href{https://en.wikipedia.org/wiki/Input\%E2\%
80\%
93output_memory_management_unit
}{Wikipedia
}
196 \newglossaryentry{ISA
}
200 Instruction Set Architecture.
201 An abstract model of a computer a definition that includes: registers, memory access,
202 input/output, data types, CPU instruction set.
203 Everything that is needed to be able to create programs to run on the machine.
204 See:
\href{https://en.wikipedia.org/wiki/Instruction_set_architecture
}{Wikipedia
}
208 \newglossaryentry{ISAMUX
}
212 \gls{ISA
} \gls{MUX
} -- having the same bits in the ISA mean different things.
216 \newglossaryentry{H
.265}
220 High Efficiency Video Coding, also known as HEVC \& MPEG-H Part
2.
222 Its data compression is better, for the same video quality, than previous standards:
223 AVC, H
.264, or MPEG-
4 Part
10.
224 Patent license may be required for H
.265 use.
226 \href{https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding
}{Wikipedia
}
230 \newglossaryentry{JIT
}
234 Just In Time compilation.
235 Translate when the program runs, only when needed.
236 See:
\href{https://en.wikipedia.org/wiki/Just-in-time_compilation
}{Wikipedia
}
240 \newglossaryentry{Linux
}
244 A free kernel on which free operating systems and specialised environments are built.
245 Linux is found all the way for small, embedded systems, to desktops, to servers
246 and the world's biggest super computers.
247 It runs on many
\gls{ISA
}s and supports a huge variety of peripheral devices.
248 Linux was inspired by Unix and is upwards compatible with POSIX.
249 See:
\href{https://www.linuxfoundation.org/
}{Linux Foundation
}
254 \newglossaryentry{LLVM
}
258 A compiler and related toolchain.
259 An open source and able to compileAda, C, C++, D, Delphi, Fortran, Haskell, Julia, Objective-C, Rust, and Swift
260 able to generate object code for many
\gls{ISA
}s including
\gls{PowerPC
}.
261 See:
\href{https://en.wikipedia.org/wiki/LLVM
}{Wikipedia
}
267 \newglossaryentry{LSB
}
271 Least Significant Bit.
272 In an integer represented in binary, the bit that has the smallest value.
273 In this
document the LSB is called 'bit
0', if this is the only bit set the
274 integer will have the value
1.
280 \newglossaryentry{MSB
}
284 Most Significant Bit.
285 In an integer represented in binary, the bit that has the greatest value.
286 If the integer is signed, this bit will make the integer negative if it is
1.
287 In this
document the MSB is given the highest number in the integer, eg:
288 in
8 bits it is called 'bit
7'; in
32 bits it is called 'bit
31'.
296 % microwatt https://github.com/antonblanchard/microwatt/blob/master/decode1.vhdl
297 % https://www.zephyrproject.org/microwatt-and-the-power-isa-support-in-renode/
298 % I did see references to this somewhere ... cannot see them now
299 \newglossaryentry{microwatt
}
303 An open source implementation of POWER by IBM in
2019.
308 \newglossaryentry{MISA
}
312 Multiple Instruction Sets Architecture.
313 The ability to run more than one
\gls{ISA
} on the same hardware.
314 A setting in a
\gls{CSR
} controls which instructions will be
315 recognised at any time.
319 % https://ieeexplore.ieee.org/document/6136696 - paywalled
320 % https://www.researchgate.net/figure/Overview-of-the-MISA-instructional-system-design-method_fig2_245165034
321 % https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9.pdf page 15
323 \newglossaryentry{MUX
}
327 Multiplex, a way of compressing several things into the same data.
332 \newglossaryentry{PC
}
337 A register that holds the address of the instruction being executed.
341 \newglossaryentry{PowerPC
}
345 A
\gls{RISC
} \gls{ISA
} created in
1991 by Apple, IBM and Motorola.
346 The name is a backronym: Performance Optimization With Enhanced RISC
347 Performance Computing, sometimes abbreviated as PPC or called POWER).
348 See:
\href{https://en.wikipedia.org/wiki/PowerPC
}{Wikipedia
}
352 \newglossaryentry{RISC
}
356 Reduced Instruction Set Computer.
357 A computer design philosophy that features simple but fast instructions,
358 often with many registers.
359 See:
\href{https://en.wikipedia.org/wiki/Reduced_instruction_set_computer
}{Wikipedia
}
363 \newglossaryentry{RISCV
}
367 An open sourced
\gls{RISC
} \gls{ISA
} started in
2010 at the University of California, Berkeley.
368 See:
\href{https://en.wikipedia.org/wiki/RISC-V
}{Wikipedia
}
372 \newglossaryentry{SoC
}
377 An integrated circuit that has (almost all) the components needed to
378 make a fully running system.
379 See:
\href{https://en.wikipedia.org/wiki/System_on_a_chip
}{Wikipedia
}
383 \newglossaryentry{SP
}
388 A register that holds the address of the current function stack
389 frame -- used for variables local to a function.
393 \newglossaryentry{SPARC
}
397 A
\gls{RISC
} \gls{ISA
} created by Sun Microsystems.
398 See:
\href{https://en.wikipedia.org/wiki/SPARC
}{Wikipedia
}
402 \newglossaryentry{SupervisorMode
}
404 name=Supervisor Mode,
406 A privileged CPU state where the program can execute instructions or otherwise
407 do things that a non-privileged program would not be allowed to do.
412 \newglossaryentry{VideoCoreIV
}
416 Low power
\gls{SoC
} from Broadcom. ARM CPU that is used in the Raspberry Pi.
417 See:
\href{https://en.wikipedia.org/wiki/VideoCore
}{Wikipedia
}
421 \newglossaryentry{VP9
}
425 Video encoding format released by Google in
2013.
426 Released open \& royalty free although Sisvel has made some claims.
427 See:
\href{https://en.wikipedia.org/wiki/VP9
}{Wikipedia
}
431 % https://libre-soc.org/vpu/
432 \newglossaryentry{VPU
}
436 Video Processing Unit.
437 Similar to a
\gls{CPU
} but has extra hardware instructions to speed up things
438 % like the decoding and encoding of \gls{H.265}, or \gls{VP9}.
442 \newglossaryentry{Z80
}
446 An
8 bit processor produced by the Zilog Inc in
1986.
447 It is compatible with the Intel
8080 processor.
448 See:
\href{https://en.wikipedia.org/wiki/Z80
}{Wikiedia
}
454 \newglossaryentry{LE
}
459 When
2/
4/
8 bytes are loaded into a
16/
32/
64 bit register the bytes at
\textbf{lower
}
460 memory addresses are put into
\textbf{lower -- less significant
} places in the register.
462 See:
\gls{BE
} and
\gls{endian
}
465 \newglossaryentry{BE
}
470 When
2/
4/
8 bytes are loaded into a
16/
32/
64 bit register the bytes at
\textbf{lower
}
471 memory addresses are put into
\textbf{higher -- more significant
} places in the register.
473 See:
\gls{LE
} and
\gls{endian
}
476 \newglossaryentry{endian
}
480 Describes in a multi-byte word, which byte contains the most significant bits.
481 Two choices Little Endian
\gls{LE
} and and Big Endian
\gls{BE
} predominate,
482 but it can be more complicated when a word is made of
4 or more bytes.
483 \gls{PowerPC
}, ARM \&
\gls{SPARC
} can be either LE or BE.
484 See:
\href{https://en.wikipedia.org/wiki/Endianness
}{Wikipedia
}
490 % Other entries to consider:
498 % 6600 https://libre-soc.org/3d_gpu/architecture/6600scoreboard/
499 % DAG Directed Acyclic Graph
502 % WAR https://libre-soc.org/3d_gpu/architecture/6600scoreboard/ #10
503 % FU-FU function to function https://libre-soc.org/3d_gpu/architecture/6600scoreboard/ #14
504 % GORD GOWR GO read/write
506 % Unified Processing Unit (UPU)
507 % MVP (Multi-thread Virtual Pipeline
511 % xepc -- in isamux.tex
512 % RV - as in RV mode Description isamux
514 % VL MVL see SVPrefix