# Processors

* [Open-source digital design implementations of Processors](#open-source-digital-design-implementations-of-processors)
  * [RISCV based](#riscv-based)
* [Microarchitecture](#microarchitecture)
* [ISA](#isa)
* [Interesting resources](#interesting-resources)
  * [Must Reads](#must-reads)
* [GPU](#gpu)
  * [Learning Resources](#learning-resources)

Everything about processors

## Open-source digital design implementations of Processors

* [ZipCPU](https://github.com/ZipCPU/zipcpu) - A small, light weight, RISC CPU soft core
* [Microwatt](https://github.com/antonblanchard/microwatt/) - A tiny Open POWER ISA softcore written in VHDL for FPGAs
* [Simple Microcoded CPU](https://minnie.tuhs.org/CompArch/Tutes/week04.html)
* [OpenRISC Project](https://github.com/openrisc)
* [OpenPiton](https://github.com/PrincetonUniversity/openpiton) - OpenPiton is an open source, general purpose, multithreaded manycore processor. It is a 64-bit architecture using SPARC v9 ISA with a distributed directory-based cache coherence protocol across on-chip networks

### RISCV based

* [PicoRV32](https://github.com/cliffordwolf/picorv32) - A Size-Optimized RISC-V CPU
* [Vectorblox ORCA](https://github.com/VectorBlox/orca) - ORCA is an implementation of RISC-V. It is intended to target FPGAs and can be configured as either RV32I a RV32IM core.
* [Pulpino](https://github.com/pulp-platform/pulpino) - PULPino is an open-source single-core microcontroller system, based on 32-bit RISC-V cores developed at ETH Zurich. PULPino is configurable to use either the RISCY or the zero-riscy core.
* [Icicle](https://github.com/grahamedgecombe/icicle) - Icicle is a 32-bit RISC-V system on chip for iCE40 HX8K, iCE40 UP5K and ECP5 FPGAs. It can be built with the open-source SymbiFlow toolchain and currently targets several development boards.
* [RISCV-BOOM](https://github.com/riscv-boom/riscv-boom) - The Berkeley Out-of-Order Machine (BOOM) is a synthesizable and parameterizable open source RV64GC RISC-V core written in the Chisel hardware construction language.
* [Piccolo](https://github.com/bluespec/Piccolo) - Open-source RISC-V CPUs from Bluespec
* [RI5CY](https://github.com/pulp-platform/riscv) - RISCY is an in-order 4-stage RISC-V RV32IMFCXpulp CPU
* [VexRiscv](https://github.com/SpinalHDL/VexRiscv) - FPGA-friendly RISC-V implementation written in SpinalHDL
* [darkriscv](https://github.com/darklife/darkriscv) - opensouce RISC-V implemented from scratch in one night!
* [SiFive Freedom](https://github.com/sifive/freedom)
* [Ariane](https://github.com/lowRISC/ariane) - Ariane is a 6-stage, single issue, in-order CPU which implements the 64-bit RISC-V instruction set. It fully implements I, M, A and C extensions
* [Shakti Processors](http://shakti.org.in/processor.html)
* [Minerva](https://github.com/lambdaconcept/minerva) - Minerva is a CPU core that currently implements the RISC-V RV32IM instruction set. Its microarchitecture is described in plain Python code using the nMigen toolbox.
* [BlackParrot](https://github.com/black-parrot/pre-alpha-release) - BlackParrot aims to be the default Linux-capable, cache-coherent, RV64GC multicore used by the world.
* [PulseRain Reindeer](https://github.com/PulseRain/Reindeer) - RISCV RV32I\[M] Soft CPU
* [Sodor](https://github.com/ucb-bar/riscv-sodor) - Educational microarchitectures collection for risc-v isa
* [BOOM](https://github.com/riscv-boom/riscv-boom) - The Berkeley Out-of-Order RISC-V Processor.
* [RSD](https://github.com/rsd-devel/rsd) - RISC-V Out-of-Order Superscalar Processor
* [BRISC-V Explorer](https://ascslab.org/research/briscv/explorer/explorer.html) - Generate RISC V Cores for different configurations
* [**RISCV Assembly visualizer**](http://tice.sea.eseo.fr/riscv/) - Visualize instruction flow through registers

## Microarchitecture

* [Microarch cheatsheet](https://docs.google.com/spreadsheets/d/18ln8SKIGRK5_6NymgdB9oLbTJCFwx0iFI-vUs6WFyuE/edit#gid=1076260513) - Centralised information about CPU μarch design such as caches, buffers, instruction width, etc

## ISA

* [Great ISAs](https://www.cs.cornell.edu/courses/cs7491/2020sp/)
* [Floating Point Visually Explained](https://fabiensanglard.net/floating_point_visually_explained/)

## Interesting resources

* [sandsifter](https://github.com/xoreaxeaxeax/sandsifter) - The sandsifter audits x86 processors for hidden instructions and hardware bugs, by systematically generating machine code to search through a processor's instruction set, and monitoring execution for anomalies.
* [The MultiCore Association](https://www.multicore-association.org/index.php) - To define and promote open specifications to enable multicore product development.
* [Skylake MicroArch](https://en.wikichip.org/wiki/intel/microarchitectures/skylake_\(server\))
* [Programmed Introduction to MIPS Assembly Language](https://chortle.ccsu.edu/AssemblyTutorial/index.html)
* [Myths Programmer's believe about CPU Cache](https://software.rajivprab.com/2018/04/29/myths-programmers-believe-about-cpu-caches/)
* [Great Microprocessors of the past and present](http://www.cpushack.com/CPU/cpu.html#tableofcontents)
* [Microarchitecture Block Diagrams of Intel, ARM and AMD processors](https://drive.google.com/drive/folders/1W4CIRKtNML74BKjSbXerRsIzAUk3ppSG)
* [Microarchitecture, Cache Organization and other details of Intel Processors](https://www.uops.info/cache.html)
* [The first ARM processor](https://spectrum.ieee.org/tech-history/silicon-revolution/chip-hall-of-fame-acorn-computers-arm1-processor)

### Must Reads

* [Modern Microprocessors: A 90-minute guide](http://www.lighterra.com/papers/modernmicroprocessors/)

## GPU

### Learning Resources

* [Graphics Processing Units (GPUs): Architecture and Programming](https://cs.nyu.edu/courses/fall15/CSCI-GA.3033-004/)
* [Floating Point visually explained](http://fabiensanglard.net/floating_point_visually_explained/index.php)
* [Why Floating Point?](https://engineering.fb.com/ai-research/floating-point-math/)
* [Bug free RISC core without simulation?](https://tomverbeure.github.io/risc-v/2018/11/19/A-Bug-Free-RISC-V-Core-without-Simulation.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rajesh-s.gitbook.io/comparchsys/area_specific/processors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
