* [libre-riscv-dev] Scoreboard vs Tomasulo
@ 2020-05-16 14:04 Yehowshua
2020-05-16 15:00 ` Luke Kenneth Casson Leighton
` (2 more replies)
0 siblings, 3 replies; 22+ messages in thread
From: Yehowshua @ 2020-05-16 14:04 UTC (permalink / raw)
To: Libre-RISCV General Development
This website gives an excellent comparison
https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/intro.html <https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/intro.html>
In general, it sits that Tomasulo is a distributed scoreboard.
The biggest drawback of Tomasulo is the central data bus as the messaging scheme. One could use a mesh NOC between functional units.
Given that we have well over 15 functional units, I would have thought a distributed scoreboard instead of a centralized one makes more sense.
Of course, I have no numbers to back this up. But these are just some thoughts.
I know we’re using a ring/circular buffer for messaging at the moment.
Given that we have hard deadlines and limited resources, we can stick with this. But these are questions I do wonder about the answer to. I wonder if there are any papers where this has been explored at sufficient depth to draw conclusions.
Yehowshua
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 14:04 [libre-riscv-dev] Scoreboard vs Tomasulo Yehowshua @ 2020-05-16 15:00 ` Luke Kenneth Casson Leighton 2020-05-16 15:06 ` Luke Kenneth Casson Leighton 2020-05-16 15:13 ` Luke Kenneth Casson Leighton 2 siblings, 0 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:00 UTC (permalink / raw) To: Libre-RISCV General Development On Saturday, May 16, 2020, Yehowshua <yimmanuel3@gatech.edu> wrote: > This website gives an excellent comparison > > https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/intro.html > <https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/intro.html > > ah good find. particularly because, like all Academic literature on the 6600, it is factually partially correct but at the same time dangerously misleading and factually wrong. this for example is wrong: However, the scoreboard is limited in that it does not handle WAR and WAW hazards very well. the original 6600 handles WAR extremely well, only stalling on WaW condition, detection which did not matter greatly because the pipelines were only at most 2 stages long anyway (Mitch only noticed after rereading last year that the FP ADD of the 6600 was 2 stage pipelined. no academic literature has acknowledged or noticed this). you have to understand that the majority of designs at the time were around 10 to 12 clocks per instruction. the CDC6600 got that down to FOUR and consequently represented a 2 to 3 fold increase in performance. > In general, it says that Tomasulo is a distributed scoreboard. mmm no. the ROB, which is the key component, is centralised, and the CDB is a central resource. > The biggest drawback of Tomasulo is the central data bus as the messaging > scheme. One could use a mesh NOC between functional units. ah, not quite the biggest: as you correctly say, all you need is multiple CDBs and that problem is solved. no, the biggest draw of Tomasulo is that the ROB (reorder buffer) numbering is in *binary*, and bear in mind that the ROB is a CAM, the larger that gets the more power it takes. let us say we have a 32 entry ROB, let us say we have 5 bits for the ROB CAM key. this not only means that when trying to put a result into the CAM we have 5x32 XOR gates to fire - on every cycle - if we want 2 Common Data Buses we now need DOUBLE that... ... *and we need clash detection*. by contrast, 6600 scoreboards have *unary* numbering and consequently the CAM is degenerate and becomes a single AND gate activation. not only that but if you wish to check or activate more than one register simultaneously then that... is... just... more than one corresponding AND gate activating at the CAM. perfectly simple, very little power, perfect for dropping multi issue on top. > Given that we have well over 15 functional units, I would have thought a > distributed scoreboard instead of a centralized one makes more sense. the document, whilst useful as a starting point, has misled you on two counts (so far) the key is that binary numbering requires power sucking CAMs. hence why the 6600 scheme, augmented to precise, and even the original 6600 Q Table numbering has been converted from binary to unary. not Tomasulo. actually.... in 6600, the DMs are still centralised, it is however the case that the unary numbering results implicitly in opportunities for parallelism (see below) and consequently could be termed "distributed". also, the role of the Function Units, the GORD/REQ latching, that is done as part of the critical acknowledgement and communication *with* the scoreboards, and is done very close to the pipelines, *not* in the DMs themselves, so in that regard, yes it is "distributed". Function Units are equivalent to "Reservation Station Rows" from Tomasulo terminology. the multiple rows per Tomasulo Reservation Station *also* requires that those be CAMs! yet more power-sucking! given that Intel processors use Tomasulo, we start to see why Intel processors suck so much power. > Of course, I have no numbers to back this up. But these are just some > thoughts. > > > I know we’re using a ring/circular buffer for messaging at the moment. yes for the future version. for the simple 180nm version it will be simple direct regfile port broadcast buses, connected one to one with the corresponding Function Unit Operand input. thus, FU operand 1 will be directly connected to Regfile Port1 Broadcast Bus. FU operand 2 - if there *is* an operand 2 - will connect to Regfile Port2 Broadcast Bus. *if we have time* then we can drop in the cyclic buffers, and when data comes out of Regfile Port2 it is cyclically shifted to Op... 1 or Op3 or whatever is required. > Given that we have hard deadlines and limited resources, we can stick with > this. But these are questions I do wonder about the answer to. I wonder if > there are any papers where this has been explored at sufficient depth to > draw conclusions. i encountered when i investigated Tomasulo a way to do multi issue in an academic paper. the method, which involved stratifying the Reorder Buffer into 4 separate slices, was awful. the binary numbering on the ROB causes massive headaches because it required special queues of binary ROB indices to represent the multi issue requests. when converted to unary, multiple bits may be set to indicate REG1 REG5 REG7 *in one cycle* on the *same wires* because one wire is dedicated to each reg. this is precisely and exactly what you need for multi issue and it is so laughably simple. l . -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 14:04 [libre-riscv-dev] Scoreboard vs Tomasulo Yehowshua 2020-05-16 15:00 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:06 ` Luke Kenneth Casson Leighton 2020-05-16 15:13 ` Luke Kenneth Casson Leighton 2 siblings, 0 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:06 UTC (permalink / raw) To: Libre-RISCV General Development https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/example1.html we have converted Fi Fj Fk and Rk Rj and Qk Qj to UNARY. bit level. this is how we can push multiple entries per clock (implement multi issue) into the DMs. in the original 6600 reg numbers were sometimes unary and sonetimes binary, with encoder-decoders converting between them. this reduced gate count at the cost of making the encoders and decoders a one data per clock bottleneck. by preserving everything as unary we can transfer up to the full number of unary bits as hazard information, in one cycle. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 14:04 [libre-riscv-dev] Scoreboard vs Tomasulo Yehowshua 2020-05-16 15:00 ` Luke Kenneth Casson Leighton 2020-05-16 15:06 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:13 ` Luke Kenneth Casson Leighton 2020-05-16 15:16 ` Luke Kenneth Casson Leighton 2 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:13 UTC (permalink / raw) To: Libre-RISCV General Development https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/tomasulo.html register renaming to eliminate output and anti-dependences, i.e. WAW and WAR hazards also misleading in that it completely misses that the 6600 Q-Tables also provide the concept of register renaming. the Latches at the Function Unit are directly equivalent to RS Row latches and are consequently "nameless registers". hence you start to see why the Academic literature is hopelessly misleading and why Mitch was pretty much compelled to write those two book chapters. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:13 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:16 ` Luke Kenneth Casson Leighton 2020-05-16 15:19 ` Luke Kenneth Casson Leighton ` (2 more replies) 0 siblings, 3 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:16 UTC (permalink / raw) To: Libre-RISCV General Development Tomasulo's algorithm implements register renaming through the use of what are called reservation stations. see? total failure to mention the 6600 Computation Unit latches as being directly equivalent to that. therefore total systematic failure in the academic literature *world wide* to mention that the 6600 had and was the world's first computer design to have register renaming. On Saturday, May 16, 2020, Luke Kenneth Casson Leighton <lkcl@lkcl.net> wrote: > https://www.cs.umd.edu/~meesh/cmsc411/website/projects/ > dynamic/tomasulo.html > > register renaming to eliminate output and anti-dependences, i.e. WAW and > WAR hazards > > also misleading in that it completely misses that the 6600 Q-Tables also > provide the concept of register renaming. > > the Latches at the Function Unit are directly equivalent to RS Row latches > and are consequently "nameless registers". > > hence you start to see why the Academic literature is hopelessly > misleading and why Mitch was pretty much compelled to write those two book > chapters. > > l. > > > > -- > --- > crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 > > -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:16 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:19 ` Luke Kenneth Casson Leighton 2020-05-16 15:23 ` Luke Kenneth Casson Leighton 2020-05-16 15:52 ` Luke Kenneth Casson Leighton 2 siblings, 0 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:19 UTC (permalink / raw) To: Libre-RISCV General Development https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/tomasulo.html Thus, unlike in scoreboarding where the functional unit would stall during a WAR hazard, the functional unit is free to execute another instruction idiot. utterly false and misleading. i am too irritated by these repeated glaring errors and misunderstandings right now to go into it in detail. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:16 ` Luke Kenneth Casson Leighton 2020-05-16 15:19 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:23 ` Luke Kenneth Casson Leighton 2020-05-16 15:52 ` Luke Kenneth Casson Leighton 2 siblings, 0 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:23 UTC (permalink / raw) To: Libre-RISCV General Development In Tomasulo's algorithm, the control logic is distributed among the reservation stations, whereas in scoreboarding, the scoreboard keeps track of everything. false and misleading. as previously mentioned, the Computation Unit latches (equivalent to RS Row) contain READ REQUEST and GOREAD synchronisation that effectively is just as "distributed" as Tomasulo. also as previously mentioned the ROB CAM is just as centralised as the DMs. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:16 ` Luke Kenneth Casson Leighton 2020-05-16 15:19 ` Luke Kenneth Casson Leighton 2020-05-16 15:23 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:52 ` Luke Kenneth Casson Leighton 2020-05-16 15:59 ` Yehowshua 2 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 15:52 UTC (permalink / raw) To: Libre-RISCV General Development https://www.cs.umd.edu/~meesh/cmsc411/website/projects/dynamic/modern.html this entire section is misleading in several ways. it's not wrong per se, it's just not the only solution. the *other* solution is to have "precise shadowing". this is a system (described at the end of Mitch 2nd chapter) which allows result *computation* to run ahead but where result *commit* is prevented and prohibited. (the gate count required to do so is extremely low.) this on the face of it would seem to stop FUs from progressing because they cannot do so until they receive their operands... and um how could they do that if writing to the regfile is prohibited? the answer is very simple: that is what Operand Forwarding is for, aka "Common Data Bus(es)". so by preventing write commit, we can run ahead for a considerable time, no stalling at all. when the branch prediction resolves, we then either: * release the shadow which allows a ton of results to begin committing. order is not strictly relevant except as preserved by the hazard detection * call the "go die" line which drops absolutely every downstream result and partial computation underway on the floor. the PC then issues ops down the alternative path. (i did actually try dual path execution: theoretically our engine can do it, i just could not get it to work last year, it was taking too long to debug, and i had to focus on other things). the thing that is particularly misleading about this particular section is that it instills in the reader's mind the false impression that there is a mandatory correlation between speculative execution and operand order committing. this is just false. if the commit can be stalled until it is guaranteed known that, after that point it is perfectly *safe* to commit (the operation is 100% going to succeed) AND if there are no hazards remaining THEN who _cares_ what order results are committed? answer: nobody. so... useful inasmuch as it is written by an academic and thus is really readable. sadly though it contains the usual glaring errors, misunderstandings and omissions which are widely pervasive and common throughout the *entire* academic world, even by those who claim to have studied 6600 scoreboards, even by those who claim to be experts on RISC design. for the most part that involves cursory reading the patent on 6600 Q Tables, *not* studying Thornton's book in great depth and taking the time to translate the (now archaic) transistor level diagrams into modern IEEE standard electronics symbols - something that Mitch went to a lot of trouble to do. i trust that this gives you something of an eyeopener into the extent of the misapprehensions that the Academic community is under, regarding out of order engine design. the closest working implementation i have seen similar to what we are doing is a conversion of an existing RV32 design to superscalar and multi issue by a chinese guy who has not revealed his name, online. he also did multi-bit unary transitive relationships and dependency tracking in exactly the same way that we will, having re-derived 6600 scoreboards with no reference to any academic literature. however he did not at the same time increase load store data bandwidth, and on top of RV32I it is a hell of a lot of extra work to bring up to where we can use it... and it's all in verilog. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:52 ` Luke Kenneth Casson Leighton @ 2020-05-16 15:59 ` Yehowshua 2020-05-16 17:33 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Yehowshua @ 2020-05-16 15:59 UTC (permalink / raw) To: Libre-RISCV General Development This is a very intricate and complicated subject matter for sure. At some point, it be great to really break things down and make them more accessible. Yehowshua _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 15:59 ` Yehowshua @ 2020-05-16 17:33 ` Luke Kenneth Casson Leighton 2020-05-16 20:16 ` Jeremy Singher 0 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 17:33 UTC (permalink / raw) To: Libre-RISCV General Development On Saturday, May 16, 2020, Yehowshua <yimmanuel3@gatech.edu> wrote: > This is a very intricate and complicated subject matter for sure. yes, except it doesn't have to be. the actual https://en.wikipedia.org/wiki/Levenshtein_distance between Tomasulo and 6600 really is not that great. i thought it would be fun to use a new unpronounceable word i learned yesterday :) > At some point, it be great to really break things down and make them more > accessible. yes. it comes down to time. start with this. 1. Begin from Tomasulo. neither TS nor original 6600 have precise exceptions so we leave that out for now. 2. Start by only allowing one row per Reservation Station. 3. Expand the number of RSes so that if you were to count the total number of places operands are stored, they are the same. (another way to put this is, "flatten all 2D RSes into 1D") 4. where pipelines were formerly connected exclusively to one RS, *preserve* those connections even though the rows are now 1D flattened. (another way to put this is: we have a global 1D naming scheme to reference the *operand latches* rather than a 2D scheme involving RS number in 1 dimension and the row number in the 2nd) 5. give this 1D flattening an UNARY numbering scheme. 6. make the size of the Reorder Buffer EXACTLY equal to the number of 1D flattened RSes. 7. rename RSes to "Function Units" (actually in Thornton's book the phrase "Computation Units" is used) thus, at this point in the transformation, the ROB row number *IS* the Function Unit Number, the need to actually store the ROB # in the Reservation Station Row is REMOVED, and consequently the Reservation Stations are NO LONGER A CAM. 8. give all register file numbers (INT FP) an UNARY numbering. this means that in the ROB, the CAM, which has to look up the register number by hitting the CAM on every cycle, now only has to match a single AND gate. bitvectors therefore replace CAMs. with the ROB now having rows of bitvectors, it is now termed a "Matrix". the left side of the ROB, which used to contain the RS Number in unary, now contains a *bitvector* Directed Acyclic Graph of the FU to FU dependencies, and is split out into its own Matrix. this we call the FU-FU Dependency Matrix. the remainder of the "ROB" contains the register numbers in unary Matrix form, and with each row being directly associated with a Function Unit, we now have an association between FU and Regs which preserves the knowledge of what instruction required which registers, *and* who will produce the result. this we call the FU-Regs Dependency Matrix. that *really is it*. take some time to absorb the transformation which not only preserves absolutely every functional aspect of the Tomasulo Algorithm, it drastically simplifies the implementation, reduces gate count, reduces power consumption *and* provides a strong foundation for doing arbitrary multi-issue execution with only an O(N) linear increase in gate count to do so. further hilariously simple additional transformations occur to replace former massive resource constrained bottlenecks, due to the binary numbering on both ROB numbers and Reg numbers, with simple large unary NOR gates: * the determination of when hazards are clear, on a per register basis, is a laughably trivial NOR gate across all columns of the FU-REGs matrix, producing a row bitvector for each read register and each write register. * the determination of when a Function Unit may proceed is a laughably trivial NOR gate across all *rows* of the *FU-FU* Matrix, producing a row-based vector, determining that it is "readable" if there exists no write hazard and "writable" if there exists no read hazard. * the Tomasulo Common Data Bus, formerly being a single chokepoint binary-addressing global Bus, may now be upgraded to *MULTIPLE* Common Data Buses that, because the addressing information about registers is now in unary, is likewise laughably trivial to use cascading Priority Pickers (a nmigen PriorityEncoder and Decoder, back-to-back) to determine which Function Unit shall be granted access to which CDB in order to receive (or send) its operand (or result). * multi-issue as i mentioned a few times is an equally laughably trivial matter of transitively cascading the Register Dependency Hazards (both read and write) across future instructions in the same multi issue execution window. instr2 has instr1 AND instr2's hazards. instr3 has instr1 AND instr2 AND instr3's hazards and so on. this just leaves the necessity of increasing register port numbers, number of CDBs, and LD/ST memory bandwidth to compensate and cope with the additional resource demands that will now occur. the latter is particularly why we have a design that, ultimately, we could take on ARM, Intel, and AMD. there is no reason technically why we could not do a 4, 6 or 8 multi issue system, and with enough Function Units and the cyclic buffer system (so as not to require a full crossbar at the Common Data Buses), and proper stratification and design of the register files, massive Vector parallelism at the pipelines would be kept fully occupied without an overwhelming increase in gates or power consumption that would normally be expected, and scalar performance would be similarly high as well. l. -- --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 17:33 ` Luke Kenneth Casson Leighton @ 2020-05-16 20:16 ` Jeremy Singher 2020-05-16 21:37 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Jeremy Singher @ 2020-05-16 20:16 UTC (permalink / raw) To: Libre-RISCV General Development > However, the scoreboard is limited in that it does not handle WAR and WAW > hazards very well. > the original 6600 handles WAR extremely well, only stalling on WaW > condition, detection which did not matter greatly because the pipelines > were only at most 2 stages long anyway (Mitch only noticed after rereading > last year that the FP ADD of the 6600 was 2 stage pipelined. no academic > literature has acknowledged or noticed this). I would argue that the CDC6600 handles WAR better than an in-order machine, but not better than a machine with full renaming. In the CDC6600, the scoreboard would block the completion of the W inst until the R inst has read its operands. In Tomasulo, the W inst can proceed immediately before the R inst is ready, since the destination register is physically renamed. > ROB is a CAM, What? This is not true. Instructions in flight track their index in the ROB, at completion, they write success bit according to the index they have. Not a CAM. Simple addressed write. > given that Intel processors use Tomasulo, we start to see why Intel > processors suck so much power. Power consumption on a processor is primarily from high switching rates on large register files, and SRAM leakage. The scheduling logic is a miniscule portion. Intel cores are power-hungry because historically they have targeted the desktop/workstation market, and do not have as many decades of experience as other firms optimizing for power-constrained environments. Also almost all modern OOO cores use Tomasulo because Tomasulo is better at avoiding false hazards compared to scoreboarding. Tomasulo also makes it easier to implement precise traps, something which is notoriously challenging with just a scoreboard. Lets be clear here. The CDC6600 AVOIDS WAR and WAW hazards by BLOCKING younger instructions (See pg3 in Mitch Alsup's text). Tomasulo's supports OOO execution PAST WAR and WAW hazards, enabling the core to exploit more ILP across its functional units. Luke, I agree with you that the reservation station rows in Tomasulo's can be equivalent to the operand latches in Scoreboarding. However, adding many operand-latches (by having many functional units) does not scale as nicely as just adding a few more rows to Tomasulo's reservation stations. Especially since designing the CAMs for Tomasulo's is a well studied, and well-understood problem > 3. Expand the number of RSes so that if you were to count the total number > of places operands are stored, they are the same. > (another way to put this is, "flatten all 2D RSes into 1D") This does not scale well. A 2D CAM is far more area efficient than a 1D flattened vector. > 7. rename RSes to "Function Units" (actually in Thornton's book the phrase > "Computation Units" is used) So a Tomasulo's design with 4 rows now becomes a "flattened" design with 4 functional units? The additional cost of the functional units is enormous. On Sat, May 16, 2020 at 10:33 AM Luke Kenneth Casson Leighton <lkcl@lkcl.net> wrote: > > On Saturday, May 16, 2020, Yehowshua <yimmanuel3@gatech.edu> wrote: > > > This is a very intricate and complicated subject matter for sure. > > > yes, except it doesn't have to be. the actual > https://en.wikipedia.org/wiki/Levenshtein_distance between Tomasulo and > 6600 really is not that great. > > i thought it would be fun to use a new unpronounceable word i learned > yesterday :) > > > > At some point, it be great to really break things down and make them more > > accessible. > > > yes. it comes down to time. > > start with this. > > 1. Begin from Tomasulo. neither TS nor original 6600 have precise > exceptions so we leave that out for now. > > 2. Start by only allowing one row per Reservation Station. > > 3. Expand the number of RSes so that if you were to count the total number > of places operands are stored, they are the same. > > (another way to put this is, "flatten all 2D RSes into 1D") > > 4. where pipelines were formerly connected exclusively to one RS, > *preserve* those connections even though the rows are now 1D flattened. > > (another way to put this is: we have a global 1D naming scheme to reference > the *operand latches* rather than a 2D scheme involving RS number in 1 > dimension and the row number in the 2nd) > > 5. give this 1D flattening an UNARY numbering scheme. > > 6. make the size of the Reorder Buffer EXACTLY equal to the number of 1D > flattened RSes. > > 7. rename RSes to "Function Units" (actually in Thornton's book the phrase > "Computation Units" is used) > > thus, at this point in the transformation, the ROB row number *IS* the > Function Unit Number, the need to actually store the ROB # in the > Reservation Station Row is REMOVED, and consequently the Reservation > Stations are NO LONGER A CAM. > > 8. give all register file numbers (INT FP) an UNARY numbering. > > this means that in the ROB, the CAM, which has to look up the register > number by hitting the CAM on every cycle, now only has to match a single > AND gate. > > bitvectors therefore replace CAMs. > > with the ROB now having rows of bitvectors, it is now termed a "Matrix". > > the left side of the ROB, which used to contain the RS Number in unary, now > contains a *bitvector* Directed Acyclic Graph of the FU to FU dependencies, > and is split out into its own Matrix. > > this we call the FU-FU Dependency Matrix. > > the remainder of the "ROB" contains the register numbers in unary Matrix > form, and with each row being directly associated with a Function Unit, we > now have an association between FU and Regs which preserves the knowledge > of what instruction required which registers, *and* who will produce the > result. > > this we call the FU-Regs Dependency Matrix. > > that *really is it*. > > take some time to absorb the transformation which not only preserves > absolutely every functional aspect of the Tomasulo Algorithm, it > drastically simplifies the implementation, reduces gate count, reduces > power consumption *and* provides a strong foundation for doing arbitrary > multi-issue execution with only an O(N) linear increase in gate count to do > so. > > > further hilariously simple additional transformations occur to replace > former massive resource constrained bottlenecks, due to the binary > numbering on both ROB numbers and Reg numbers, with simple large unary NOR > gates: > > * the determination of when hazards are clear, on a per register basis, is > a laughably trivial NOR gate across all columns of the FU-REGs matrix, > producing a row bitvector for each read register and each write register. > > * the determination of when a Function Unit may proceed is a laughably > trivial NOR gate across all *rows* of the *FU-FU* Matrix, producing a > row-based vector, determining that it is "readable" if there exists no > write hazard and "writable" if there exists no read hazard. > > * the Tomasulo Common Data Bus, formerly being a single chokepoint > binary-addressing global Bus, may now be upgraded to *MULTIPLE* Common Data > Buses that, because the addressing information about registers is now in > unary, is likewise laughably trivial to use cascading Priority Pickers (a > nmigen PriorityEncoder and Decoder, back-to-back) to determine which > Function Unit shall be granted access to which CDB in order to receive (or > send) its operand (or result). > > * multi-issue as i mentioned a few times is an equally laughably trivial > matter of transitively cascading the Register Dependency Hazards (both read > and write) across future instructions in the same multi issue execution > window. instr2 has instr1 AND instr2's hazards. instr3 has instr1 AND > instr2 AND instr3's hazards and so on. this just leaves the necessity of > increasing register port numbers, number of CDBs, and LD/ST memory > bandwidth to compensate and cope with the additional resource demands that > will now occur. > > the latter is particularly why we have a design that, ultimately, we could > take on ARM, Intel, and AMD. > > there is no reason technically why we could not do a 4, 6 or 8 multi issue > system, and with enough Function Units and the cyclic buffer system (so as > not to require a full crossbar at the Common Data Buses), and proper > stratification and design of the register files, massive Vector parallelism > at the pipelines would be kept fully occupied without an overwhelming > increase in gates or power consumption that would normally be expected, and > scalar performance would be similarly high as well. > > l. > > > > > -- > --- > crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 > _______________________________________________ > libre-riscv-dev mailing list > libre-riscv-dev@lists.libre-riscv.org > http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 20:16 ` Jeremy Singher @ 2020-05-16 21:37 ` Luke Kenneth Casson Leighton 2020-05-16 22:45 ` Jeremy Singher 0 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-16 21:37 UTC (permalink / raw) To: Libre-RISCV General Development On Sat, May 16, 2020 at 9:16 PM Jeremy Singher <thejsingher@gmail.com> wrote: > > However, the scoreboard is limited in that it does not handle WAR and WAW > > hazards very well. > > > the original 6600 handles WAR extremely well, only stalling on WaW > > condition, detection which did not matter greatly because the pipelines > > were only at most 2 stages long anyway (Mitch only noticed after rereading > > last year that the FP ADD of the 6600 was 2 stage pipelined. no academic > > literature has acknowledged or noticed this). > > I would argue that the CDC6600 handles WAR better than an in-order > machine, but not better than a machine with full renaming. Jeremy: 6600 designs *do* have register "renaming". i said already, a number of times. and if you have studied and listened to the Academic literature - and believe it - you are misinformed by that literature, and will continue to be misinformed by that literature. please understand: i have spent over nine months studying this, learning from Mitch Alsup, one of the world's leading high-performance computing architects, implementing this and it's not going to get chucked out to implement something that takes six MONTHS to fully understand is a better design, to be replaced by something that would take another six months to implement *and we then could not do multi-issue on top of it*. please therefore take the time to understand this design, particularly when we are right in the middle of a time-critical deadline. > In the > CDC6600, the scoreboard would block the completion of the W inst until > the R inst has read its operands. In Tomasulo, the W inst can proceed > immediately before the R inst is ready, since the destination register > is physically renamed. Jeremy: the "renaming" carried out by the 6600 does exactly this same job. Academics unfortunately have *only* studied the *patent* - not Thornton's book nor read Mitch Alsup's book chapters which he wrote based on 30+ years experience of implementing 6600-style execution in the 88100, AMD K9 and AMD Opteron Series of CPUs. the 6600 patent *ONLY* covers the Q-Tables. the description of the Q-Tables does *NOT* include the Computation Units where the operand latches are. these latches *ARE* the "renamed registers" (actually, nameless registers). > > ROB is a CAM, > > What? This is not true. Instructions in flight track their index in > the ROB, at completion, they write success bit according to the index > they have. Not a CAM. Simple addressed write. ah appreciated the correction. i knew there were CAMs somewhere. when i discovered that, i dropped further investigation. i am however aware that if you wish to do multi-issue, the ROB will need to be multi-ported SRAM. without multi-porting the SRAM, you simply cannot write multiple entries. this is where the problems (read: nightmares) for Tomasulo start to manifest, and progress from there through multiple Common Data Bus channels into multi-ported (NxR, NxW) CAMs at the Reservation Station level. i've been through this, ok, over 18 months ago. by contrast, when converted to single-bit unary vectors, each entry in the Matrices (covered by a single SR NAND latch) is *independent*. multiple of those may be set in a single cycle. there has been a *massive* amount of thought gone into this, ok? > > given that Intel processors use Tomasulo, we start to see why Intel > > processors suck so much power. > > Power consumption on a processor is primarily from high switching > rates on large register files, and SRAM leakage. given that we're planning around 28 Function Units and have a 128-entry register file, the calculations that i did for that would put the Dependency Matrices around a whopping 50,000 gates, using SR NAND Latches. (if we did it as DFFs it would be an unacceptable 250,000 gates) > The scheduling logic is a miniscule portion. not for the large-scale out-of-order systems that we are planning to do, it's not, due to the large sized GPU register file (128 entries. actually 2x 128 - 128 FP, 128 INT). we may have to *down*-scale via a regfile cache to cope with that. discussion for another time. > Intel cores are power-hungry because > historically they have targeted the desktop/workstation market, and do > not have as many decades of experience as other firms optimizing for > power-constrained environments. appreciated the insight. > Also almost all modern OOO cores use Tomasulo because Tomasulo is > better at avoiding false hazards compared to scoreboarding. in the versions of scoreboards implemented by academics - because they fail to comprehend them properly - because they only read the patent on Q-Tables - yes. in the version that Mitch Alsup - a world leading expert on Scoreboard Mechanics - taught me: no. also, the IIT Madras RISE Group Shakti E-Class processor is *also* a scoreboard design. this was designed "from first principles" by Professor Kamatoti, and it was only through learning from Mitch that i was able to recognise what he had done as being identical to a 6600 scoreboard. > Tomasulo > also makes it easier to implement precise traps, something which is > notoriously challenging with just a scoreboard. no it is not. this is *yet again* complete factual misinformation and ignorance from Academic literature. can i ask: have you read Patterson's book? this is the usual place where most people get their misinformation from. the release of this misinformation was why Mitch Alsup - a very pissed-off and exasperated Mitch - wrote those two chapters, back around... 2008 (i think). precise exceptions, traps, interrupts, branch speculation and predication may all be achieved through "shadowing". see the latter part of the 2nd chapter of Mitch's book. see the section "Shadowing" in this page: https://libre-soc.org/3d_gpu/architecture/6600scoreboard/ it's very simple: you hold write until such time as the opportunity for "damage" is cleared. Operand Forwarding allows instructions to run ahead, using results that would otherwise have to be received only first by going through the Regfile. *this is already implemented* and the unit tests demonstrated it as *fully functional* > Lets be clear here. The CDC6600 AVOIDS WAR and WAW hazards by BLOCKING > younger instructions (See pg3 in Mitch Alsup's text). Tomasulo's > supports OOO execution PAST WAR and WAW hazards, enabling the core to > exploit more ILP across its functional units. this is only because the 1965 CDC6600 did not have an Operand Forwarding Bus (instead it used the regfile as a same-clock forwarding bus, by reading on one edge and writing on the other. this unfortunately meant that without an OpFwd Bus, stall had to occur). this DOES NOT INHERENTLY MEAN that **ALL** Scoreboards are rubbish. if you add an Operand Forwarding Bus (equivalent to the CDB in Tomasulo) the exact same parity functionality is achieved (without the severe downsides). > Luke, I agree with you that the reservation station rows in Tomasulo's > can be equivalent to the operand latches in Scoreboarding. However, > adding many operand-latches (by having many functional units) does not > scale as nicely as just adding a few more rows to Tomasulo's > reservation stations. this is incorrect. you may be under the mistaken impression that the pipelines duplicated as well. this clearly would be inadviseable because the FU's job is to serve one and only one result. therefore you know that this is a mistaken understanding, and that consequently you have multiple FUs for the same pipeline. (termed "Concurrent Computation Unit"). therefore it's minimal. excluding the latches themselves (the rows have latches, the CompUnits - aka FunctionUnits have latches, the total number of latches after flattening is the same), the number of gates added by each CompUnit is minimal: around... 80, maximum. that's peanuts. > Especially since designing the CAMs for > Tomasulo's is a well studied, and well-understood problem the key is the combination of those two: A) well-understood... *and* B) a problem. have a look at how multi-issue is done using Tomasulo. it's shockingly bad. > > 3. Expand the number of RSes so that if you were to count the total number > > of places operands are stored, they are the same. > > > (another way to put this is, "flatten all 2D RSes into 1D") > > This does not scale well. A 2D CAM is far more area efficient than a > 1D flattened vector. a 1D bitvector. a single, 1D bitvector. of 32 bits in length. compared to 32 5-bit binary addresses. just the latches alone, that math does not stack up. now let's take it to 2D. let's say that we have 10 FUs and 32 Regs. in Tomasulo that is a 5-bit address. 10x5 = 50 DFF latches. DFF latches are 10 gates so that's 500 gates. in 6600 that is 10x32 = 320 SR NAND Latches. SR NAND latches are 2 gates. 320x2 is 640 gates. not very different in terms of latch count, is it? now let's do the address-checking. to check a register as "active" - bear in mind that this is per register and consequently if doing multi-issue that's a batch of address-checking gates *per register*. for Tomasulu, this requires 10x5 = 500 XOR gates (plus some multi-input AND gates on each row) XOR is 4 gates, so that's 2,000 gates *PER MULTI-ISSUE LANE*. for the 6600, that's 10x32 **AND** gates. 320 AND gates. and of those 320 AND gates, they are re-useable for multi-issue WITHOUT REQUIRING ADDITIONAL GATES. so that is 320 AND gates for single-issue that is zero extra gates for dual-issue that is zero extra gates for quad-issue zero extra gates for octal-issue. start to make sense now, why unary encoding as 1D vectors is less gates and less power than binary CAMs? if you want to check multiple unary bits (a critical prerequisite for multi-issue), all you do is... set... multiple... bits. what happens? multiple AND gates fire. in the same clock. and that's exactly what we want. > > 7. rename RSes to "Function Units" (actually in Thornton's book the phrase > > "Computation Units" is used) > > So a Tomasulo's design with 4 rows now becomes a "flattened" design > with 4 functional units? The additional cost of the functional units > is enormous. no, it's 4 x 80 gates (approx). that's not 4x duplication of ALU pipelines *behind* those 4 Function Units. see Mitch's 2nd Chapter, "Concurrent Computation Unit" https://libre-soc.org/3d_gpu/architecture/6600scoreboard/600x-concurrent_comp_unit.png Jeremy: it's rather unfortunate timing. six to twelve months ago, we could have had this debate and it would have been fun, informative, useful and productive. it would also have been possible to bring you in to the discussions that took place (Nov 2018 to around Apr-May 2019) between myself, Samuel Falvo, Mitch Alsup and the team either here on this list, or on comp.arch. however with the upcoming deadline, this kind of otherwise really valuable discussion is, sadly, something that we *do not have time for*. retrospective recommendation that we reconsider and use Tomasulo would not only result in us completely missing the upcoming Oct 2020 deadline, we would end up with an exceptionally poorly-performing, limited and seriously problematic processor as well. worse than that, sadly i have to say that i am concerned that any retrospective discussion would itself (aside from valuable corrections and assistance in creating a comparative analysis) become a serious distraction. it's liitterallly taken 18 MONTHs to get to the point where we are now with the code and the design. we need to finish the design in a very short timeframe (14 weeks), and as Yehowshua points out, due to the complexity of this particular area of Computer Science, that in turn implies that you'll need to trust me on the architectural analysis (which took 5 months to complete, under Mitch's guidance). so, my apologies for needing to be firm on this: the opportunity to help exists within the time-frame and financial constraints that were determined and set, over 18 months ago, before you joined. therefore, if you'd like to help, then asking questions which are related to *understanding* of the precise-augmented Scoreboard system, targetted very specifically at allowing you to engage and assist us in meeting that deadline, are very welcome. anything other than that very specific goal-orientated focus, i am really sorry, we really need to move it to one side, and for that, i recommend comp.arch. therefore, if you would like to discuss the merits of Tomasulo vs Scoreboard (particularly those that pursue recommending Tomasulo *over* Scoreboard) further, i recommend doing so on comp.arch, which is where Mitch Alsup most regularly may be found. with the right interesting question, both he and many others will pitch in. the one thing that you need to be aware of is that Mitch is both hyper-intelligent, and second that he does not tolerate people who cannot keep up with him, especially if they try to convince him of something without having first demonstrated that they've understood *him*. he's well over 70, he's retired, he made enough "xxxx-you" money on selling GPU patents to Samsung, so he doesn't have to put up with anything that he doesn't want to :) l. _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 21:37 ` Luke Kenneth Casson Leighton @ 2020-05-16 22:45 ` Jeremy Singher 2020-05-17 0:47 ` Yehowshua 2020-05-17 0:53 ` Luke Kenneth Casson Leighton 0 siblings, 2 replies; 22+ messages in thread From: Jeremy Singher @ 2020-05-16 22:45 UTC (permalink / raw) To: Libre-RISCV General Development I have finally finished parsing Mitch's chapters, and now I see what the primary confusion is from. The scoreboard being developed here has been referred to in the mailing lists as a "CDC 6600-like" scoreboard, while in reality, the final design is far extended far beyond the original CDC 6600 implementation. I would suggest not calling it a "CDC 6600-like scoreboard" in the future, instead a "extended scoreboard" is more accurate. Let me try to compose my thoughts. In order for OOO execution to be possible, write data from speculatively executed instructions must be buffered, for in the case of misspeculation, they must not be allowed to commit into the architectural register file. In Tomasulo's, speculative write data are held in physically renamed registers. In the extended scoreboard scheme, speculative write data are held in compute unit latches. In Tomasulo's, branch dependency masks are used to drain misspeculated instructions. In extended scoreboard, the misspeculated instructions drain themselves from the system. Both schemes can be designed to achieve similar OOO behaviors. Thus, one cannot draw a performance conclusion just by seeing which scheme is being used. Ideally the above text should be uncontroversial, please let me know if there is a large misunderstanding here. My opinion is that Tomasulo's is a more elegant and well-proven scheme for achieving OOO execution, compared to an extended scoreboard. I also argue that the extended scoreboard scheme does not present significant power/area advantages compared to Tomasulo's. Given that estimates on power/area tend to be wildly inaccurate, I think we will have to wait for power analysis of LibreSoC to get a definitive answer to this debate :). I deeply apologize if any of my thoughts could be interpreted as criticism. I fully support this kind of exploration in OOO design. I also apologize if I seem to suggest a change in design, as I understand that hardware design is not nearly as flexible as software design. On Sat, May 16, 2020 at 2:38 PM Luke Kenneth Casson Leighton <lkcl@lkcl.net> wrote: > > On Sat, May 16, 2020 at 9:16 PM Jeremy Singher <thejsingher@gmail.com> wrote: > > > > However, the scoreboard is limited in that it does not handle WAR and WAW > > > hazards very well. > > > > > the original 6600 handles WAR extremely well, only stalling on WaW > > > condition, detection which did not matter greatly because the pipelines > > > were only at most 2 stages long anyway (Mitch only noticed after rereading > > > last year that the FP ADD of the 6600 was 2 stage pipelined. no academic > > > literature has acknowledged or noticed this). > > > > I would argue that the CDC6600 handles WAR better than an in-order > > machine, but not better than a machine with full renaming. > > Jeremy: 6600 designs *do* have register "renaming". i said already, > a number of times. and if you have studied and listened to the Academic > literature - and believe it - you are misinformed by that literature, and will > continue to be misinformed by that literature. > > please understand: i have spent over nine months studying this, learning > from Mitch Alsup, one of the world's leading high-performance computing > architects, implementing this and it's not going to get chucked out to > implement something that takes six MONTHS to fully understand is a > better design, to be replaced by something that would take another six > months to implement *and we then could not do multi-issue on top of it*. > > please therefore take the time to understand this design, particularly when > we are right in the middle of a time-critical deadline. > > > In the > > CDC6600, the scoreboard would block the completion of the W inst until > > the R inst has read its operands. In Tomasulo, the W inst can proceed > > immediately before the R inst is ready, since the destination register > > is physically renamed. > > Jeremy: the "renaming" carried out by the 6600 does exactly this same > job. > > Academics unfortunately have *only* studied the *patent* - not Thornton's > book nor read Mitch Alsup's book chapters which he wrote based on 30+ > years experience of implementing 6600-style execution in the 88100, > AMD K9 and AMD Opteron Series of CPUs. > > the 6600 patent *ONLY* covers the Q-Tables. > > the description of the Q-Tables does *NOT* include the Computation Units > where the operand latches are. > > these latches *ARE* the "renamed registers" (actually, nameless registers). > > > > ROB is a CAM, > > > > What? This is not true. Instructions in flight track their index in > > the ROB, at completion, they write success bit according to the index > > they have. Not a CAM. Simple addressed write. > > ah appreciated the correction. i knew there were CAMs somewhere. > when i discovered that, i dropped further investigation. > > i am however aware that if you wish to do multi-issue, the ROB will need > to be multi-ported SRAM. without multi-porting the SRAM, you simply > cannot write multiple entries. > > this is where the problems (read: nightmares) for Tomasulo start to manifest, > and progress from there through multiple Common Data Bus channels into > multi-ported (NxR, NxW) CAMs at the Reservation Station level. > > i've been through this, ok, over 18 months ago. > > by contrast, when converted to single-bit unary vectors, each entry in the > Matrices (covered by a single SR NAND latch) is *independent*. multiple > of those may be set in a single cycle. > > there has been a *massive* amount of thought gone into this, ok? > > > > > given that Intel processors use Tomasulo, we start to see why Intel > > > processors suck so much power. > > > > Power consumption on a processor is primarily from high switching > > rates on large register files, and SRAM leakage. > > given that we're planning around 28 Function Units and have a 128-entry > register file, the calculations that i did for that would put the Dependency > Matrices around a whopping 50,000 gates, using SR NAND Latches. > > (if we did it as DFFs it would be an unacceptable 250,000 gates) > > > The scheduling logic is a miniscule portion. > > not for the large-scale out-of-order systems that we are planning to > do, it's not, > due to the large sized GPU register file (128 entries. actually 2x > 128 - 128 FP, > 128 INT). > > we may have to *down*-scale via a regfile cache to cope with that. > discussion for another time. > > > > Intel cores are power-hungry because > > historically they have targeted the desktop/workstation market, and do > > not have as many decades of experience as other firms optimizing for > > power-constrained environments. > > appreciated the insight. > > > Also almost all modern OOO cores use Tomasulo because Tomasulo is > > better at avoiding false hazards compared to scoreboarding. > > in the versions of scoreboards implemented by academics - because they > fail to comprehend them properly - because they only read the patent > on Q-Tables - yes. > > in the version that Mitch Alsup - a world leading expert on Scoreboard > Mechanics - taught me: > > no. > > also, the IIT Madras RISE Group Shakti E-Class processor is *also* a > scoreboard design. this was designed "from first principles" by Professor > Kamatoti, and it was only through learning from Mitch that i was able > to recognise what he had done as being identical to a 6600 scoreboard. > > > Tomasulo > > also makes it easier to implement precise traps, something which is > > notoriously challenging with just a scoreboard. > > no it is not. this is *yet again* complete factual misinformation and ignorance > from Academic literature. > > can i ask: have you read Patterson's book? this is the usual place where > most people get their misinformation from. the release of this misinformation > was why Mitch Alsup - a very pissed-off and exasperated Mitch - wrote those > two chapters, back around... 2008 (i think). > > precise exceptions, traps, interrupts, branch speculation and predication may > all be achieved through "shadowing". see the latter part of the 2nd chapter of > Mitch's book. > > see the section "Shadowing" in this page: > https://libre-soc.org/3d_gpu/architecture/6600scoreboard/ > > it's very simple: you hold write until such time as the opportunity for "damage" > is cleared. Operand Forwarding allows instructions to run ahead, using results > that would otherwise have to be received only first by going through > the Regfile. > > *this is already implemented* and the unit tests demonstrated it as > *fully functional* > > > > Lets be clear here. The CDC6600 AVOIDS WAR and WAW hazards by BLOCKING > > younger instructions (See pg3 in Mitch Alsup's text). Tomasulo's > > supports OOO execution PAST WAR and WAW hazards, enabling the core to > > exploit more ILP across its functional units. > > this is only because the 1965 CDC6600 did not have an Operand Forwarding Bus > (instead it used the regfile as a same-clock forwarding bus, by reading on one > edge and writing on the other. this unfortunately meant that without an OpFwd > Bus, stall had to occur). > > this DOES NOT INHERENTLY MEAN that **ALL** Scoreboards are rubbish. > > if you add an Operand Forwarding Bus (equivalent to the CDB in Tomasulo) > the exact same parity functionality is achieved (without the severe downsides). > > > > Luke, I agree with you that the reservation station rows in Tomasulo's > > can be equivalent to the operand latches in Scoreboarding. However, > > adding many operand-latches (by having many functional units) does not > > scale as nicely as just adding a few more rows to Tomasulo's > > reservation stations. > > this is incorrect. you may be under the mistaken impression that the pipelines > duplicated as well. this clearly would be inadviseable because the FU's job > is to serve one and only one result. therefore you know that this is a mistaken > understanding, and that consequently you have multiple FUs for the same > pipeline. (termed "Concurrent Computation Unit"). > > therefore it's minimal. excluding the latches themselves (the rows > have latches, the > CompUnits - aka FunctionUnits have latches, the total number of latches after > flattening is the same), the number of gates added by each CompUnit is > minimal: around... 80, maximum. > > that's peanuts. > > > Especially since designing the CAMs for > > Tomasulo's is a well studied, and well-understood problem > > the key is the combination of those two: > > A) well-understood... *and* > B) a problem. > > have a look at how multi-issue is done using Tomasulo. it's shockingly bad. > > > > > 3. Expand the number of RSes so that if you were to count the total number > > > of places operands are stored, they are the same. > > > > > (another way to put this is, "flatten all 2D RSes into 1D") > > > > This does not scale well. A 2D CAM is far more area efficient than a > > 1D flattened vector. > > a 1D bitvector. a single, 1D bitvector. of 32 bits in length. > > compared to 32 5-bit binary addresses. > > just the latches alone, that math does not stack up. > > now let's take it to 2D. > > let's say that we have 10 FUs and 32 Regs. > > in Tomasulo that is a 5-bit address. 10x5 = 50 DFF latches. DFF > latches are 10 gates so that's 500 gates. > > in 6600 that is 10x32 = 320 SR NAND Latches. SR NAND latches are 2 > gates. 320x2 is 640 gates. > > not very different in terms of latch count, is it? > > > now let's do the address-checking. > > to check a register as "active" - bear in mind that this is per > register and consequently > if doing multi-issue that's a batch of address-checking gates *per register*. > > for Tomasulu, this requires 10x5 = 500 XOR gates (plus some > multi-input AND gates on each row) XOR is 4 gates, so that's 2,000 > gates *PER MULTI-ISSUE LANE*. > > for the 6600, that's 10x32 **AND** gates. 320 AND gates. > > and of those 320 AND gates, they are re-useable for multi-issue > WITHOUT REQUIRING ADDITIONAL GATES. > > so that is 320 AND gates for single-issue > that is zero extra gates for dual-issue > that is zero extra gates for quad-issue > zero extra gates for octal-issue. > > start to make sense now, why unary encoding as 1D vectors is less > gates and less power than binary CAMs? > > if you want to check multiple unary bits (a critical prerequisite for > multi-issue), all you do is... set... multiple... bits. > > what happens? multiple AND gates fire. in the same clock. and > that's exactly what we want. > > > > > 7. rename RSes to "Function Units" (actually in Thornton's book the phrase > > > "Computation Units" is used) > > > > So a Tomasulo's design with 4 rows now becomes a "flattened" design > > with 4 functional units? The additional cost of the functional units > > is enormous. > > no, it's 4 x 80 gates (approx). that's not 4x duplication of ALU > pipelines *behind* those 4 Function Units. see Mitch's 2nd Chapter, > "Concurrent Computation Unit" > > https://libre-soc.org/3d_gpu/architecture/6600scoreboard/600x-concurrent_comp_unit.png > > Jeremy: it's rather unfortunate timing. six to twelve months ago, we > could have had this debate and it would have been fun, informative, > useful and productive. it would also have been possible to bring you > in to the discussions that took place (Nov 2018 to around Apr-May > 2019) between myself, Samuel Falvo, Mitch Alsup and the team either > here on this list, or on comp.arch. > > however with the upcoming deadline, this kind of otherwise really > valuable discussion is, sadly, something that we *do not have time > for*. > > retrospective recommendation that we reconsider and use Tomasulo would > not only result in us completely missing the upcoming Oct 2020 > deadline, we would end up with an exceptionally poorly-performing, > limited and seriously problematic processor as well. worse than that, > sadly i have to say that i am concerned that any retrospective > discussion would itself (aside from valuable corrections and > assistance in creating a comparative analysis) become a serious > distraction. > > it's liitterallly taken 18 MONTHs to get to the point where we are now > with the code and the design. we need to finish the design in a very > short timeframe (14 weeks), and as Yehowshua points out, due to the > complexity of this particular area of Computer Science, that in turn > implies that you'll need to trust me on the architectural analysis > (which took 5 months to complete, under Mitch's guidance). > > so, my apologies for needing to be firm on this: the opportunity to > help exists within the time-frame and financial constraints that were > determined and set, over 18 months ago, before you joined. > > therefore, if you'd like to help, then asking questions which are > related to *understanding* of the precise-augmented Scoreboard system, > targetted very specifically at allowing you to engage and assist us in > meeting that deadline, are very welcome. > > anything other than that very specific goal-orientated focus, i am > really sorry, we really need to move it to one side, and for that, i > recommend comp.arch. > > therefore, if you would like to discuss the merits of Tomasulo vs > Scoreboard (particularly those that pursue recommending Tomasulo > *over* Scoreboard) further, i recommend doing so on comp.arch, which > is where Mitch Alsup most regularly may be found. with the right > interesting question, both he and many others will pitch in. > > the one thing that you need to be aware of is that Mitch is both > hyper-intelligent, and second that he does not tolerate people who > cannot keep up with him, especially if they try to convince him of > something without having first demonstrated that they've understood > *him*. he's well over 70, he's retired, he made enough "xxxx-you" > money on selling GPU patents to Samsung, so he doesn't have to put up > with anything that he doesn't want to :) > > l. > > _______________________________________________ > libre-riscv-dev mailing list > libre-riscv-dev@lists.libre-riscv.org > http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 22:45 ` Jeremy Singher @ 2020-05-17 0:47 ` Yehowshua 2020-05-17 0:53 ` Luke Kenneth Casson Leighton 1 sibling, 0 replies; 22+ messages in thread From: Yehowshua @ 2020-05-17 0:47 UTC (permalink / raw) To: Libre-RISCV General Development > On May 16, 2020, at 6:45 PM, Jeremy Singher <thejsingher@gmail.com> wrote: > > Let me try to compose my thoughts. > In order for OOO execution to be possible, write data from > speculatively executed instructions must be buffered, for in the case > of misspeculation, they must not be allowed to commit into the > architectural register file. This sounds correct to me. > I think we will > have to wait for power analysis of LibreSoC to get a definitive answer > to this debate :). Probably. Yehowshua _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] Scoreboard vs Tomasulo 2020-05-16 22:45 ` Jeremy Singher 2020-05-17 0:47 ` Yehowshua @ 2020-05-17 0:53 ` Luke Kenneth Casson Leighton 2020-05-17 5:24 ` [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) Cesar Strauss 1 sibling, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-17 0:53 UTC (permalink / raw) To: Libre-RISCV General Development On Sat, May 16, 2020 at 11:45 PM Jeremy Singher <thejsingher@gmail.com> wrote: > > I have finally finished parsing Mitch's chapters, and now I see what > the primary confusion is from. The scoreboard being developed here has > been referred to in the mailing lists as a "CDC 6600-like" scoreboard, > while in reality, the final design is far extended far beyond the > original CDC 6600 implementation. yes. well... far beyond it in *functionality*, but not that far in terms of gate count [caveat: if we were only doing the same 3 regfiles, A B and X. as we are doing 32x INT, 32x FP, plus SPR regs *and* Condition Regs all under the control of Dependency Matrices, a direct comparison is unfair] oh. ah. one definite enhancement: in the diagrams you see in Mitch's chapters, there is only one GO-READ and only one GO-WRITE. one GO-READ indicates a desire to request *multiple* Regfile Read ports. because POWER9 has in some cases up to *five* incoming registers and *three* outgoing registers (in different Regfiles - INT/FP, SPR, CR), we needed to split those out into individual lines. GO-READ1/READ-REQ1, GO-READ2/READ-REQ2 etc. currently i am struggling with this FSM which implements 3-operand in, immediates, 2-operand out *and* manages the address, GO-ST, address exceptions and deals with POWER9 LD/ST "Update" mode. https://libre-soc.org/3d_gpu/ld_st_comp_unit.jpg this i reaaaally need some help with. > I would suggest not calling it a > "CDC 6600-like scoreboard" in the future, instead a "extended > scoreboard" is more accurate. appreciated. if you could consider helping change the wiki to reflect this (and help us to maintain the advantages below) this would be fantastic. i've used a range of terms - "augmented 6600 scoreboard", and others. the historic link and the effective revival of something long-forgotten which was both elegant and staggeringly gate-efficient (out of necessity): i don't want to use the word "political" in any sentence however there is a considerable publicity "wow factor" to doing something as surprising as reviving a 55-year-old design. since interacting with Mitch Alsup last year, you're the first additional person to actually do any kind of significant analysis: consequently terminology has not really been discussed... because there wasn't anyone to discuss it with! > Let me try to compose my thoughts. > In order for OOO execution to be possible, write data from > speculatively executed instructions must be buffered, for in the case > of misspeculation, they must not be allowed to commit into the > architectural register file. mis-speculation, LD/ST page-faults, predicated instructions where the operand that contains the bitmask is in a register that has not been read yet, and even simple external NMI interrupts: all of these need a means and method of killing in-flight data, yes. > In Tomasulo's, speculative write data are held in physically renamed registers. > In the extended scoreboard scheme, speculative write data are held in > compute unit latches. these two effectively having a very low Levenshtein distance, but not quite zero. * in Tomasulo, the reason for the explicit renaming is down to the 2D nature of RS's. hence the ROB row number needs to be stored in the RS * in extended-scoreboard, the FU's index / column-number *is* that "name"; with there only *being* a one-to-one path, there is no need for a name *at all*, hence why i refer to the CU latches as "nameless registers". the ROB row number *is* the FU number which *is* the renamed-register-number and consequently by being one-to-one in every aspect, needs no name. this aspect of 6600 scoreboards - the complete lack of naming and even the lack of significance drawn to it even by James Thornton himself in his book, and certainly in the patents, is why the 6600 is *believed* not to have register renaming of *any* kind. ah - one other really critical thing (i will add to the page): * Tomasulo ROB Row numbers preserve instruction order through sequential numbering by the actual row number * 6600 scoreboards preserve instruction order in the FU-FU Matrix with a NxN bit-level matrix of SR Latches implementing a "linked list" (the Directed Acyclic Graph) of ordered dependencies, using the *register* dependencies at the time the instruction is inserted into the *FU-REGS* Matrix to determine the FU-FU DAG. this has more in common with a "linked list" data structure, to use software terminology. this latter aspect is a crucial one that even James Thornton notes is really *really* complex to explain, yet paradoxically requires an extraordinarily small number of actual gates to implement. however understanding the difference between the (binary) ROB Row numbering (which preserves the DAG of instruction order by way of binary-addressed instruction ROB Row N+1 being a greater index than binary-addressed instruction ROB Row N) and this "functionally-equivalent" linked-list system equally successfully preserving a DAG but using unary SR Latches to do so, is key to recognising and appreciating that Tomasulo and Scoreboards *really are* functionally directly equivalent. here it should become clear as to another aspect of why multi-issue is problematic in Tomasulo. where detection of "readiness to commit" in a single-issue Tomasulo is a simple matter of checking *one* row "is your result ready, if yes commit it and cyclically increment the pointer to the ROB row to the next item, ready for test-or-commit on the *next* cycle", this must be updated to testing of *multiple* row "readiness" states, which clearly requires a multi-ported SRAM. this is where "solutions" that i have seen actually stratify the ROB into 4 (or N) interleaved banks. crossbars are required... it's where the nightmares begin. > In Tomasulo's, branch dependency masks are used to drain misspeculated > instructions. are these unary-encoded or binary-encoded? by masks i would expect them to be unary-encoded and thus allow multiple bits to be set, allowing multiple operations to be cancelled. if not, and binary masks are used, then each unit must have an arithmetic comparator, "is my binary index less than or equal to the branch dependency mask, if less than, then this means i must die". the Shakti 6600-like (extended) scoreboard system in their E-Class design uses *binary* numbering, which means that they use that scheme. effectively the mask is not a mask per se, it is a shortened version of the instruction sequential number. BOOM uses unary bit-masks. i think. i had a brief conversation about it with someone, somewhere, a few months back. i greatly prefer the unary system. it allows interleaving of multiple simultaneous cancellations to *automatically* sort themselves out, by ORing the cancellations together to produce the mask! this is an "accidental" side-effect of the Shadow Matrix concept, described below. a binary-indexed cancellation system requires a *central resource* to calculate the lowest-numbered "index", followed by broadcasting that index across the one (and only one) permitted cancellation datapath. > In extended scoreboard, the misspeculated instructions drain > themselves from the system. ah no. we'll be cancelling them explicitly, via an unary bit-mask, that is global and combinatorial in nature, extending right the way through the entirety of the Function Unit, CompUnits *and* the associated pipelines. the unary mask is basically a conversion of the *binary* indices of the CompUnit number on any given Concurrent Computation Unit. 0-3 in this diagram here: https://libre-soc.org/3d_gpu/architecture/6600scoreboard/600x-concurrent_comp_unit.png thus in that case the unary cancellation mask would be 4-bit wide. these are linked directly to - and are equal to - the "GO_DIE" signals in *this* diagram: https://libre-soc.org/3d_gpu/shadow.jpg note in that diagram the existence per cell in the Dependency Matrices of *two* Shadow Latches. the first Shadow Latch is for the first Branch Unit to indicate "speculative execution underway as controlled and directed by Branch Unit 1". the second Shadow Latch is for the *second* Branch Unit to do likewise. a third Shadow Latch exists for predicated execution. one bit each of the predicate register (once read) will be thrown at the "FAILED-3" line if that bit is zero, and at the "SUCCESS-3" line if that bit is 1. if "failed" is asserted, then so is the "GO_DIE". that "GO_DIE", being connected to the cancellation masks, *INSTANTLY* kills not just the register hazard allocation, it resets the Function Unit to idle *and* kills the partial result generation actually in the pipeline itself. if "success" is asserted, the shadow latches are cleared, and "WRITE_REQUEST" is no longer prevented and prohibited from asserting. the result (if it was ready), is allowed to proceed "I now request a Regfile Write Port". if the result happened not to be ready, then when the result *is* ready it will not be held up. a fourth Shadow latch exists for cancellation of operations in the "shadow" of a LD/ST Unit's page-fault / address exception. as you can see this requires a trivial number of gates per cell, however it is *each* exception or cancellation opportunity that requires these Shadows, on a *per FU basis*, across all *other* FUs. consequently i designed a "Shadow Matrix" that takes care of that. > Both schemes can be designed to achieve similar OOO behaviors. > Thus, one cannot draw a performance conclusion just by seeing which > scheme is being used. no. hence why we haven't done that kind of analysis: we're focussing on implementation. > Ideally the above text should be uncontroversial, please let me know > if there is a large misunderstanding here. nono looks great, really appreciate the insights raised. the missing piece is the true significance of the role of the Shadow Matrices as being *the* provision of precise exception capability, speculation, predication, everything. yes i am aware that without "predication prediction" yes those are two different words we end up with exactly the same situation as for Branch Prediction: predicated operations that are issued, cause FUs to become full / allocated, that are cancelled moments later because the majority of the predicate register turns out to be full of zeros. this is *not* a high priority item right now :) > My opinion is that Tomasulo's is a more elegant and well-proven scheme > for achieving OOO execution, compared to an extended scoreboard. I > also argue that the extended scoreboard scheme does not present > significant power/area advantages compared to Tomasulo's. Mitch Alsup is better equipped, from 40 years experience at gate-level design (which he kept and *refined* when working for AMD, hence some of the blistering withering words to less experienced, less-knowledgeable people trying to tell him that HDLs were inherently better), to answer this one. > Given that > estimates on power/area tend to be wildly inaccurate, I think we will > have to wait for power analysis of LibreSoC to get a definitive answer > to this debate :). if we have to use DFFs rather than SR NAND, the argument is instantly won by Tomasulo because we have quite literally a 5-fold increase in gate count right across the board, in every single Matrix. Shadow, FU-Regs, FU-FU - the lot. everywhere you see an SR-Latch diagram (2 gates), instead add 10 gates for a DFF. for the 180nm ASIC this would jump approximately.... mmm... 10,000 gates up to 50,000. we may have to do that. it will suck. > I deeply apologize if any of my thoughts could be interpreted as > criticism. I fully support this kind of exploration in OOO design. I > also apologize if I seem to suggest a change in design, as I > understand that hardware design is not nearly as flexible as software > design. appreciated, Jeremy. if this discussion was taking place 6 to 12 months ago the "mode" we would be in was radically different. now is "full-bore time-critical implementation mode", and will be until the other side of Oct 2020. l. _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 0:53 ` Luke Kenneth Casson Leighton @ 2020-05-17 5:24 ` Cesar Strauss 2020-05-17 10:07 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Cesar Strauss @ 2020-05-17 5:24 UTC (permalink / raw) To: libre-riscv-dev Greetings, On 05/16/2020 21:53, Luke Kenneth Casson Leighton wrote: > because POWER9 has in some cases up to *five* incoming registers and > *three* outgoing registers (in different Regfiles - INT/FP, SPR, CR), we needed > to split those out into individual lines. GO-READ1/READ-REQ1, > GO-READ2/READ-REQ2 etc. > > currently i am struggling with this FSM which implements 3-operand in, > immediates, 2-operand out *and* manages the address, GO-ST, address > exceptions and deals with POWER9 LD/ST "Update" mode. > > https://libre-soc.org/3d_gpu/ld_st_comp_unit.jpg > > this i reaaaally need some help with. I'm willing to lend a hand in this, and/or any other tasks the group deem appropriate. Do you have already have any code, unit test and/or testbench for this module? A timing diagram would also be welcome. Regarding myself, I do have experience in digital circuit design, and finite state machines in particular, which I mostly apply to FPGA programming. My field of work is in data acquisition and control, for scientific instruments, at the astrophysics department of a research institute (but I am an engineer, not an astronomer). I apply microcontrollers and FPGAs at several research projects. With the rise of single-board computers, I'm starting to use them as well. My main attraction to this project is having free firmware and boot loaders, and also full documentation, freely available and complete, by principle. I have read the Charter at https://libre-soc.org/charter/, and agree with it. I can use only my free time (weekends and evenings). Regards, Cesar _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 5:24 ` [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) Cesar Strauss @ 2020-05-17 10:07 ` Luke Kenneth Casson Leighton 2020-05-17 12:59 ` Cesar Strauss 0 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-17 10:07 UTC (permalink / raw) To: Libre-RISCV General Development On Sun, May 17, 2020 at 6:25 AM Cesar Strauss <cestrauss@gmail.com> wrote: > > https://libre-soc.org/3d_gpu/ld_st_comp_unit.jpg > > > > this i reaaaally need some help with. > > I'm willing to lend a hand in this, and/or any other tasks the group > deem appropriate. that's really appreciated, Cesar. > Do you have already have any code, unit test and/or testbench for this > module? A timing diagram would also be welcome. yes, it's here: https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/experiment/compldst_multi.py;hb=HEAD the timing diagram is auto-generated when running that code (as its own unit test: python3 experiment/compldst_multi.py). it can be loaded with "gtkwave". to save you some time adding 100+ signals to gtkwave i'm attaching a pre-saved diagram, i even set some pretty colours in it :) also a second one for the L0 cache/buffer to which CompLDSTUnit is connected. this is run as "python3 experiment/l0_cache.py" i will raise a bugreport about it as this should be discussed there. > Regarding myself, I do have experience in digital circuit design, and > finite state machines in particular, which I mostly apply to FPGA > programming. > > My field of work is in data acquisition and control, for scientific > instruments, at the astrophysics department of a research institute (but > I am an engineer, not an astronomer). I apply microcontrollers and FPGAs > at several research projects. With the rise of single-board computers, > I'm starting to use them as well. > > My main attraction to this project is having free firmware and boot > loaders, and also full documentation, freely available and complete, by > principle. that's really appreciated. > I have read the Charter at https://libre-soc.org/charter/, and agree > with it. thank you Cesar. _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 10:07 ` Luke Kenneth Casson Leighton @ 2020-05-17 12:59 ` Cesar Strauss 2020-05-17 13:03 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Cesar Strauss @ 2020-05-17 12:59 UTC (permalink / raw) To: libre-riscv-dev Em 05/17/2020 07:07, Luke Kenneth Casson Leighton wrote: > On Sun, May 17, 2020 at 6:25 AM Cesar Strauss <cestrauss@gmail.com> wrote: > >>> https://libre-soc.org/3d_gpu/ld_st_comp_unit.jpg >>> >>> this i reaaaally need some help with. >> >> I'm willing to lend a hand in this, and/or any other tasks the group >> deem appropriate. > > that's really appreciated, Cesar. I'm glad I can help. > >> Do you have already have any code, unit test and/or testbench for this >> module? A timing diagram would also be welcome. > > yes, it's here: > https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/experiment/compldst_multi.py;hb=HEAD > > the timing diagram is auto-generated when running that code (as its > own unit test: python3 experiment/compldst_multi.py). it can be > loaded with "gtkwave". to save you some time adding 100+ signals to > gtkwave i'm attaching a pre-saved diagram, i even set some pretty > colours in it :) > > also a second one for the L0 cache/buffer to which CompLDSTUnit is > connected. this is run as "python3 experiment/l0_cache.py" > > i will raise a bugreport about it as this should be discussed there. I saw it (https://bugs.libre-soc.org/show_bug.cgi?id=318). I'll assign it to myself then, if you don't mind? I think I have enough information available, to proceed. I'm beginning already to have some understanding of the problem at hand. I'll ask if I need anything. I'll give feedback as I go on. I've been following the mailing list for some time, with interest, but skimming over more technical details. I'll try to become more up to speed. I did attend an introductory course on Computer Architecture, so I do have a little background on the subject. Regards, Cesar _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 12:59 ` Cesar Strauss @ 2020-05-17 13:03 ` Luke Kenneth Casson Leighton 2020-05-17 22:23 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-17 13:03 UTC (permalink / raw) To: Libre-RISCV General Development On Sun, May 17, 2020 at 1:59 PM Cesar Strauss <cestrauss@gmail.com> wrote: > > Em 05/17/2020 07:07, Luke Kenneth Casson Leighton wrote: > > On Sun, May 17, 2020 at 6:25 AM Cesar Strauss <cestrauss@gmail.com> wrote: > I saw it (https://bugs.libre-soc.org/show_bug.cgi?id=318). I'll assign > it to myself then, if you don't mind? yes please do. ahh i *might* have "fixed" it - however this is such complex code i cannot be truly certain. transferring to the bugreport. l. _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 13:03 ` Luke Kenneth Casson Leighton @ 2020-05-17 22:23 ` Luke Kenneth Casson Leighton 2020-05-17 22:42 ` Cesar Strauss 0 siblings, 1 reply; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-17 22:23 UTC (permalink / raw) To: Libre-RISCV General Development btw Cesar you've been tracking the list for a while, so you know of this: https://libre-soc.org/HDL_workflow feel free to send me an ssh public key. l. _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 22:23 ` Luke Kenneth Casson Leighton @ 2020-05-17 22:42 ` Cesar Strauss 2020-05-17 23:01 ` Luke Kenneth Casson Leighton 0 siblings, 1 reply; 22+ messages in thread From: Cesar Strauss @ 2020-05-17 22:42 UTC (permalink / raw) To: libre-riscv-dev On 05/17/2020 19:23, Luke Kenneth Casson Leighton wrote: > btw Cesar you've been tracking the list for a while, so you know of this: > https://libre-soc.org/HDL_workflow Indeed. > feel free to send me an ssh public key. Gladly. It is attached. Regards, Cesar _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) 2020-05-17 22:42 ` Cesar Strauss @ 2020-05-17 23:01 ` Luke Kenneth Casson Leighton 0 siblings, 0 replies; 22+ messages in thread From: Luke Kenneth Casson Leighton @ 2020-05-17 23:01 UTC (permalink / raw) To: Libre-RISCV General Development you may have to send that privately, the list only allows certain attachments. --- crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68 On Sun, May 17, 2020 at 11:42 PM Cesar Strauss <cestrauss@gmail.com> wrote: > > On 05/17/2020 19:23, Luke Kenneth Casson Leighton wrote: > > btw Cesar you've been tracking the list for a while, so you know of this: > > https://libre-soc.org/HDL_workflow > > Indeed. > > > feel free to send me an ssh public key. > > Gladly. It is attached. > > Regards, > > Cesar > _______________________________________________ > libre-riscv-dev mailing list > libre-riscv-dev@lists.libre-riscv.org > http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev _______________________________________________ libre-riscv-dev mailing list libre-riscv-dev@lists.libre-riscv.org http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, back to index Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-05-16 14:04 [libre-riscv-dev] Scoreboard vs Tomasulo Yehowshua 2020-05-16 15:00 ` Luke Kenneth Casson Leighton 2020-05-16 15:06 ` Luke Kenneth Casson Leighton 2020-05-16 15:13 ` Luke Kenneth Casson Leighton 2020-05-16 15:16 ` Luke Kenneth Casson Leighton 2020-05-16 15:19 ` Luke Kenneth Casson Leighton 2020-05-16 15:23 ` Luke Kenneth Casson Leighton 2020-05-16 15:52 ` Luke Kenneth Casson Leighton 2020-05-16 15:59 ` Yehowshua 2020-05-16 17:33 ` Luke Kenneth Casson Leighton 2020-05-16 20:16 ` Jeremy Singher 2020-05-16 21:37 ` Luke Kenneth Casson Leighton 2020-05-16 22:45 ` Jeremy Singher 2020-05-17 0:47 ` Yehowshua 2020-05-17 0:53 ` Luke Kenneth Casson Leighton 2020-05-17 5:24 ` [libre-riscv-dev] LD/ST Comp Unit FSM (was: Re: Scoreboard vs Tomasulo) Cesar Strauss 2020-05-17 10:07 ` Luke Kenneth Casson Leighton 2020-05-17 12:59 ` Cesar Strauss 2020-05-17 13:03 ` Luke Kenneth Casson Leighton 2020-05-17 22:23 ` Luke Kenneth Casson Leighton 2020-05-17 22:42 ` Cesar Strauss 2020-05-17 23:01 ` Luke Kenneth Casson Leighton
Libre RISC-V Mailing list Archives (accessible via public-inbox) Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev Example config snippet for mirrors AGPL code for this site: git clone https://public-inbox.org/public-inbox.git