From bd6ce0f81de6b002c3da3f750db4c3ebefc4433f Mon Sep 17 00:00:00 2001 From: Damien Pretet Date: Thu, 14 Sep 2023 21:45:35 +0200 Subject: [PATCH] Update documentation --- README.md | 15 ++++--- doc/architecture.md | 27 +++++------ doc/assets/dCache-ooo.png | Bin 44674 -> 32244 bytes doc/assets/dCache-top.png | Bin 146337 -> 154292 bytes doc/assets/friscv-core-top.png | Bin 30071 -> 28210 bytes doc/assets/iCache-fetcher.png | Bin 97204 -> 106506 bytes doc/friscv.drawio | 80 ++++++++++++++++++++------------- 7 files changed, 71 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index c044d22..ceacccc 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ - ███████╗██████╗ ██╗███████╗ ██████╗██╗ ██╗ - ██╔════╝██╔══██╗██║██╔════╝██╔════╝██║ ██║ - █████╗ ██████╔╝██║███████╗██║ ██║ ██║ - ██╔══╝ ██╔══██╗██║╚════██║██║ ╚██╗ ██╔╝ - ██║ ██║ ██║██║███████║╚██████╗ ╚████╔╝ - ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝ ╚═══╝ + ███████╗██████╗ ██╗███████╗ ██████╗██╗ ██╗ + ██╔════╝██╔══██╗██║██╔════╝██╔════╝██║ ██║ + █████╗ ██████╔╝██║███████╗██║ ██║ ██║ + ██╔══╝ ██╔══██╗██║╚════██║██║ ╚██╗ ██╔╝ + ██║ ██║ ██║██║███████║╚██████╗ ╚████╔╝ + ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝ ╚═══╝ ![CI](https://github.com/dpretet/friscv/actions/workflows/ci.yaml/badge.svg?branch=master) [![GitHub license](https://img.shields.io/github/license/dpretet/friscv)](https://github.com/dpretet/friscv/blob/master/LICENSE) @@ -54,9 +54,10 @@ The IP is decribed in two layers: The core is compact and composed by: - the control unit, fetching and sequencing the instructions - the processing unit, executing the arithmetic and memory access instructions -- the cache units +- the cache units, one for instruction, one for data bus - the CSR unit - the ISA registers +- the memory protection unit for less-privilege mode memory access More details of the architecture can be found in the: - Architecture [chapter](./doc/architecture.md). diff --git a/doc/architecture.md b/doc/architecture.md index 46fe76a..051bf89 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -18,6 +18,7 @@ The FRISCV core is compact and composed by: - the cache units, one for instuction bus, one for data bus - the CSR unit, providing the registers to connect the features and extensions - the ISA registers, shared between control and processing units +- the MPU (memory protection unit) composed by PMP and PMA for less-privilege mode memory access `Platform` @@ -41,7 +42,7 @@ instructions across the hart. The unit is composed by several pieces: - The central FSM sequencing the execution - The program counter management based on current instruction to execute -- A FIFO to buffer the incoming instructions +- A FIFO to buffer the incoming instructions (optional) - An instruction decoder to decompose the machine code and ease the processing

@@ -64,9 +65,9 @@ addresses `0x4` and `0x5` are discarded and only instructions from `0xA` will be this new memory section read, the control unit increments the address channel ID when jumping to ease this batch identification. -The FIFO present as a front-end of the module is very important to store incoming instructions in -case the processing unit, the CSRs are not ready to execute an instruction (for instance if reading -the external central memory). +The FIFO present as a front-end of the module can be activated to store incoming instructions in +case the processing unit is not ready to execute an instruction (for instance if reading +the external central memory or executing a division). In case the control unit pre-loaded too much instruction while a branch needs to be taken, it can flush the front-end FIFO and the iCache buffer and restarts faster to follow the new branch. @@ -223,19 +224,19 @@ request to the memory controller. This path is needed to manage IO R/W while the cachable. -#### Read Out-Of-Order Management +#### Out-Of-Order Management

-Read request can target either an IO region or a cachable region, the application needs to -indicate this information with ARCACHE. Block-Fetcher stage (same module than iCache) manages the +Read/Write request can target either an IO region or a cachable region, the application needs to +indicate this information with ACACHE. Block-Fetcher stage (same module than iCache) manages the read request in the cache blocks, IO-Fetcher manages the IO request to route directly in the memory -with the memory controller. Because read request can come back out-of-order with the latency -different between block and memory, the dCache uses one more module to manage that. The OoO Manager -module substitutes ARID to make it unique for each read request and uses them to reorder the read -data completion to the application. This stage can be deactivated if not necessary, if the -application can manage by itself the reordering or if doesn't target IO region (Block-Fetcher always -completes requets in-order). +with the memory controller. Pusher maanges all the write requests. Because read or write requests +can come back out-of-order with the latency different between block and memory, the dCache uses one +more module to manage that. The OoO Manager module substitutes AID to make it unique for each r/w +request and uses them to reorder the completions to the application. This stage can be +deactivated if not necessary, if the application can manage by itself the reordering or if doesn't +target IO region (Block-Fetcher always completes requets in-order). #### AXI4 Ordering Rules diff --git a/doc/assets/dCache-ooo.png b/doc/assets/dCache-ooo.png index 0006a8a8109d947a18a36fdfc375416fd4c51bb0..ea4ef8c03f8b74b4703ec443bdd12e39b2ba673c 100644 GIT binary patch literal 32244 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 bIwWX3{IW6TY(@!e+zAxms&d7*%!2<5oT_#J literal 44674 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