So today we're going to continue our discussion of very long instruction word processors. And we're going to start talking about how they. Change via a classical VLIW processor, into a processor which can actually get a lot of the parallelism and the instructional parallelism, you can get inside of out-of-order superscalars. And to do this, we are gonna have to add a lot of extra features to our traditional or classical VLIW. We're gonna solely work through that, and we're gonna, basically, list out or enumerate all of the possible different types of instructional parallelism, and where that comes from in something like an out of order superscalar. And then we're gonna systematically add features into a very long instructional word processor, or VLIW processor. To, to get us, to that point. But I'll give you a hint that not all the things out of order superscalar can get are easy to get in VLIW processors. Or even possible in the realm of things that people have built up to this point. So before we do that, I wanted to take a step back and review something from last class and also review something from I wanted to clarify something that I said about how a, the EQ model and the LEQ model are the equals model or the LEQ model from a scheduling perspective. So let's back up to slides way, way, way back. At the beginning. And more of what, I was just gonna comment that the equals model of VLIW scheduling and the less than or equal to less than or equals scheduling model, are just scheduling models. That's all they are. They're not actually something that's in the hardware. They may influence what the hardware has to do or what the hardware has to provide. So, for instance, if you have an equals model and, you have an instruction followed by another instruction in your very long instruction word processor. And, let's say the instruction reads the value of some register in sort of the shadow of while the value's being computed. You're gonna get the old value in the EG model. So, as a, as a quick code example here. We can take a look at a bundle of instructions here. Let's say you have something like Multiply. R1, R3, R4. And in the same bundle or in the same VLIW instruction, we have some other random thing here. We are going to use the curly braces here to denote that it's one, instruction or one bundle. Then this multiply we'll say has a latency of four cycles. So you can't actually go read the result and if we look at something like a EQ model. We're gonna end up with, let's say we just have some other instructions in here, but this one here is important. We have an add. Which reads R1. Note: this multiply writes R1 but as we said the multiply has a latency of four cycles so this in the EQ model is going to get the value before the multiply. So it's not gonna pick up this result. And then, let's say we just have some other random stuff maybe some non-dependent adds and subtracts. And I'm not going to write the registers here, because they don't read anything or write anything which is read or written in these two bundles. Maybe you have a NOP. And then finally down here, we have something. Which does a load. Of R1 and gets the result of this mulitply. So all, all I'm trying to get across here is, this is a scheduling model of what the compiler needs to do and where it needs to place code that we're talking about in these schedular models. It's not a hardware roblem. If we were to try and take this same piece of code and run it in a LEQ model, the main difference is, this add here which reads R1, would not be able, would not be allowed in the shadow here. So what would the shadow of this multiply or the delay of the multiply. Because if you were for instance take an interrupter or something like that and this add were to get moved later, moved later than this load or moved more than four cycles later or three cycles later you'll actually pick up the new value. You'll basically change the semantics of your program. So if you were to do this in something like a LEQ model this add would have to be above the multiply and you would have to replace NOP. More of what I'm trying to get across here is these are just scheduling models and not actually scheduling models the compiler wants to use and not models, or, or not hardware models. The hardware has to implement something, which makes sense for the scheduler model, but when we talk about these different concepts, they really are just a software scheduler model. Okay, so now we're gonna go back forward here, and move on to. New contents today.