From: Luke Kenneth Casson Leighton Date: Fri, 8 May 2020 16:24:18 +0000 (+0100) Subject: add notes on example Function Unit allocation X-Git-Tag: convert-csv-opcode-to-binary~2696 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bee97671ce41244e7742392c9d166601451911a5;p=libreriscv.git add notes on example Function Unit allocation --- diff --git a/3d_gpu/architecture/6600scoreboard.mdwn b/3d_gpu/architecture/6600scoreboard.mdwn index 2b77777b7..48cab33d4 100644 --- a/3d_gpu/architecture/6600scoreboard.mdwn +++ b/3d_gpu/architecture/6600scoreboard.mdwn @@ -82,6 +82,27 @@ ultimately then, there is: *row* that knows, on a per-operand-number basis, what the actual register file number is. +# Example allocation of Function Units + +This is the key diagram showing the relationship between Function Units +and the Register File(s). + +The Dependency Matrices manage the DAG of read-write relationships: +each Function Unit indicates which registers it requires for read +and which it needs permission to write to. + +NOTE: **AT NO TIME** is **any** Function Unit permitted "direct" access to +global resources by way of any form of "unmanaged" path. Each Function +Unit may **only** receive incoming data and may **only** pass that data +out via the set determined path, as controlled by the Dependency Matrices. + +An augmentation of this arrangement, for a modern processor using pipelines, +is to "double up" (or triple, or quadruple etc.) the number of Function +Units, but to *share the same pipeline*. See "Concurrent Computation Unit" +section below for details. + +[[!img multiple_function_units.png size="600x"]] + # Modifications needed to Computation Unit and Group Picker The scoreboard uses two big NOR gates respectively to determine when there @@ -158,9 +179,6 @@ ways: anywhere in the pipeline from progressing further, thus saving power. -[[!img multiple_function_units.png size="600x"]] - - # Multi-in cascading Priority Picker Using the Group Picker as a fundamental unit, a cascading chain is created,