From c3045be2e3fcb73c7d0039018023987bf6e0337a Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Wed, 12 Dec 2018 12:52:07 +0000 Subject: [PATCH] update conversation --- 3d_gpu/microarchitecture.mdwn | 42 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/3d_gpu/microarchitecture.mdwn b/3d_gpu/microarchitecture.mdwn index e7da4e7f7..c69ec48e7 100644 --- a/3d_gpu/microarchitecture.mdwn +++ b/3d_gpu/microarchitecture.mdwn @@ -368,34 +368,34 @@ and there are several of them: - most recent STOREs prevent later LOADs. * one for Function-Unit to Function-Unit. - it expresses both RAW and WAW hazards through "Go_Write" - and "Go_Read" signals, which are stopped from proceeding by - dependent 1-bit CAM latches + and "Go_Read" signals, which are stopped from proceeding by + dependent 1-bit CAM latches - exceptions may ALSO be made "precise" by holding a "Write prevention" -     signal.  only when the Function Unit knows that an exception is - not going to occur (memory has been fetched, for example), does - it release the signal +    signal.  only when the Function Unit knows that an exception is + not going to occur (memory has been fetched, for example), does + it release the signal - speculative branch execution likewise may hold a "Write prevention", - however it also needs a "Go die" signal, to clear out the - incorrectly-taken branch. + however it also needs a "Go die" signal, to clear out the + incorrectly-taken branch. - LOADs/STOREs *also* must be considered as "Functional Units" and thus -       must also have corresponding entries (plural) in the FU-to-FU Matrix +    must also have corresponding entries (plural) in the FU-to-FU Matrix - it is permitted for ALUs to *BEGIN* execution (read operands are - valid) without being permitted to *COMMIT*.  thus, each FU must - store (buffer) results, until such time as a "commit" signal is - received + valid) without being permitted to *COMMIT*.  thus, each FU must + store (buffer) results, until such time as a "commit" signal is + received - we may need to express an inter-dependence on the instruction order -       (raising the WAW hazard line to do so) as a way to preserve execution -       order.  only the oldest instructions will have this flag dropped, - permitting execution that has *begun* to also reach "commit" phase. +    (raising the WAW hazard line to do so) as a way to preserve execution +    order.  only the oldest instructions will have this flag dropped, + permitting execution that has *begun* to also reach "commit" phase. * one for Function-Unit to Registers. - it expresses the read and write requirements: the source - and destination registers on which the operation depends.  source - registers are marked "need read", dest registers marked - "need write". + and destination registers on which the operation depends.  source + registers are marked "need read", dest registers marked + "need write". - by having *more than one* Functional Unit matrix row per ALU - it becomes possible to effectively achieve "Reservation Stations" - orthogonality with the Tomasulo Algorithm.  the FU row must, like - RS's, take and store a copy of the src register values. + it becomes possible to effectively achieve "Reservation Stations" + orthogonality with the Tomasulo Algorithm.  the FU row must, like + RS's, take and store a copy of the src register values. ## Register Renaming @@ -460,7 +460,7 @@ on the destination   register number * the Register Read and Write signals are then "striped" such that read/write requests for every 2nd (or 4th) register are "grouped" and will have to fight for access to a multiplexer in order to access - registers that do not   have the same modulo 2 (or 4) match. + registers that do not have the same modulo 2 (or 4) match. * we MAY potentially be able to drop the destination (write) multiplexer(s)   by only permitting FU rows with the same modulo to write to that destination bank.  FUs with indices 0,4,8,12 may only write to registers -- 2.30.2