Computer Architecture
Est. read time: 1 minute | Last updated: August 29, 2024 by John Gentile
Contents
In the beginning, software was run as hard coded instructions targeting a computer to run a single, finite task (hell it even used to be coded on physical punch cards). However, due to ever increasing demand for faster and more powerful systems, the antiquated systems of the past grew in the level of complexity, and corresponding resulting layers of abstraction, to the operating systems we have today. In general, a systems software van be grouped into two buckets:
- Operating System: program(s) that manage system resources, libraries and allow applications to easily run
- Applications: programs that run on top of an operating system and interact with the user to run a variety of tasks
Memory
Memory Mapped I/O (MMIO)
Normal memory- used for code, data, heap and stack- is usually treated as executable and can be cached, reordered, and speculatively loaded. Unaligned access can be supported.
Device Memory, which is used for MMIO, are never cached, not executable, no instruction fetch, no speculative data access, and all accesses must be aligned.
RISC-V
RISC-V Designs & Repos
- picorv32: small (750-2k LUT), high $f_{max}$ (250-450 MHz) RV32I processor, deployed in many FPGA & ASIC implementations
- BOOM: Berkeley Out-of-Order RISC-V processor
- Ocelot: BOOM with
V-EXT
support
- Ocelot: BOOM with
- VRoom!: high-end RISC-V implementation
- XiangShan: high-performance RISC-V processor
- Chipyard: RISC-V SoC design framework