The fact that this 7 minute video explained this abstract topic better than my college course is really saying something. Thank you so much for illustrating this in a much more understandable way.
Thank you, Scott. I have been reading these concepts from the study book and the animation in it but couldn't quite understand them fully. It was very helpful.
Extremely helpful. My professor took 2 classes (2 hours total) to go over this topic, and still explained it worse than you did in 8 minutes. I was frantically doing a last-ditch effort to understand data paths before my midterm and I am so thankful that I stumbled upon this video. Thank you very much.
This video ist absolutely amazing thank you so much! It helped me understanding this topic in only a few minutes after being frustrated about it for a while :)
Hello from the University of Central Florida. I wish you were my professor. You explained something in 7 minutes that I couldn't understand *at all* from my own professor. This is the same diagram from my textbook. You're helping people in other universities too! You're doing the lord's work, sir. Thank you.
I'm sure that doggo got some pets after you finished this video. Thanks for the simple explanation! Needed a visualization that my book couldn't really give me.
Thanks for the explanation, I had a hard time understanding the wording in the textbook (whether it's my ESL or the book is just badly written), and this helped me understand!
please! Can you help me? I am having problems in the Hazard Pipeline section. I want to see how to run to see the command conflict on this MARS software when running the program is not?
It took me some time to digest that block image. Just to explain my first impression: I was surprised that the memory is integrated like this with parts of the CPU on both sides. I was surprised by two ALUs. For the PC use a single ADC and just hard wire the address pins to zero. I don’t get why the sign extend is below the register file. Also sign extension is typically done in the ALU. You just wire all high pins to the sign trace. Nobody not in reality, not for explanation would route the sign extended value over - ah there is a node. I still think that those 4 other crossings should go away. Maybe things like sign extension and shift don’t belong here like a two-complements isn’t also not explained here. So MIPS could not decide where to store the write register in the instruction. SH2 could . Why do we care? Funny how the ALU zero output goes nowhere because MIPS forgot the flags .. of course it goes to branch. I like this. The branching sits in the load store phase, while MIPS claims that the instruction address is ready in the next cycle for the fetch. Maybe there really are two ALUs who calculate both potential new fetch addresses? Then there is a straight connection back from the zero output of the main ALU to a Demux just in front of the program memory? Like after the output latches before the buffers=current amplifier.
anyone help me for this assignment You are required to create a simulation of MIPS architecture in your favourite programming language. You should define an object (class) for each of the major components of the architecture. The public members of each object should be: 1. storage element(s) storing the output data of the component 2. function(s) that correspond(s) to the control signals for the component. While simulating each component, the input to this component should be fetched from the output storage element of the component(s) connected to it in the architecture. To simplify the design, multiplexers are not considered as separate components, but rather as parts of other components. A class "machine" should be defined to represent the desired architecture. It should include the major components of the architecture. Namely, mem_unit, alu, registers,CU, PC_unit and IR_unit. This class has only two public members; 1. a "load_prog" method to read a machine language program from the file and load it to sequential locations of a simulated memory in the class "mem_unit" starting at location zero. "load_prog" should also initialize the program counter to zero. 2. an "execute» which simulates the actual execution of the program and eventually calls within the following method "clock_cycle". A "clock_cycle" function that simulates what happens during one clock cycle. This function should emulate the finite state machine control, which will require that the class "machine" keep track of the current machine state in a private variable "state”. Instruction Set: The program should be implemented to execute one of the following subsets of the MIPS Instructions set: Subset: holds the instructions ori, beq, lw, exit system Specifically, your machine should recognize the following opcodes in the high order six bits of an instruction, and simulate the execution of that instruction: 0011 01 === ori ? 0001 00 === beq 1001 00 === lw ? 1111 11 === system call to exit. The exit system call should display the content of the 32 machine registers as well as the allocated memory locations. Input: The input to your simulation will be a machine language program stored in a file. The file should include a sequence of machine language instructions, each instruction being a 32-bit word encoded in hexadecimal. Sample codes can be taken from here: sweetcode.io/building-first-simple-program-mips-assembly-language/ It should be converted to machine language. Output: The output will be a well formatted display of the content of the 32 machine registers as well as the allocated memory locations (all displayed in hex), when an exit system call is encountered. This should be followed with the total execution time of the program, in terms of - Number of cycles: counted in your method. - Real execution time (in milliseconds): Use System.nanoTime(); at the beginning and end of the "execute" method, then display the difference.
WOW that dog almost gave me a freaking heart attack.
Gikos same here
Gikos yeah...The person with headphones must be panicked,😕
I thought there was a dog behind me for a moment
Same Man
same here
I'm like half asleep and then 3:10 happened and now I'm 135% awake.
4 years later, same happened to me XD
Same here lmao
Thanks for the jumpscare timestamp 😂
The fact that this 7 minute video explained this abstract topic better than my college course is really saying something. Thank you so much for illustrating this in a much more understandable way.
so i can understand this 7 miniutes video but cant understand 3hours class.nice logic!
You did an amazing job at explaining this topic. Also, the dog barking at 3:10 had me laughing on the floor at the library.
Thanks!
same! I'm here laughing at a really quiet office hour lol
Not really in detail disappointed
Im not gonna lie, I jumped at the dog HAHAHA
same@@shaansaharan7294 🤣🤣🤣
dont be scare at 3:10
+murat dereköylü LOL, yeah, my dog can be "special" at times. ;)
Too late bro, I'm not sleepy anymore xD
Prior to this video I had no clue in hell how data paths worked but now it makes so much more sense! Thank you very much for your help sir.
Thank you, Scott. I have been reading these concepts from the study book and the animation in it but couldn't quite understand them fully. It was very helpful.
Dude thid video saved my ass from failing thank you so much , understood this from the first time you are a good teacher
Extremely helpful. My professor took 2 classes (2 hours total) to go over this topic, and still explained it worse than you did in 8 minutes. I was frantically doing a last-ditch effort to understand data paths before my midterm and I am so thankful that I stumbled upon this video. Thank you very much.
the dog almost killed me
The dog was trying to ask a question
Finally understood this whole dataflow. Thanks a lot.
This video ist absolutely amazing thank you so much! It helped me understanding this topic in only a few minutes after being frustrated about it for a while :)
8 years later, I am watching this. Better than the 2 hours lecture of my faculty. Absolutely to the point.
😂😂😂 we're at the same page
Same here buddy😂😂
Hello from the University of Central Florida. I wish you were my professor. You explained something in 7 minutes that I couldn't understand *at all* from my own professor. This is the same diagram from my textbook.
You're helping people in other universities too! You're doing the lord's work, sir. Thank you.
Hello fellow knights!
Go Knights!!@
@@TheSentientCloud Charge on!!!!
it's been 8 years and that dog barks still hits harder than ever 😂
Thank you so much! This cleared any confusions I had.
Thank youu so muchhhh!
i can't tell you how much this video helped me out
I'm sure that doggo got some pets after you finished this video. Thanks for the simple explanation! Needed a visualization that my book couldn't really give me.
That dog scared the shit out of me :D
You made that so simple. Thanks!!!
the illustration makes it much easier to understand the concept
This video was actually very helpful. Thank you.
Amazing explanation! thank you so much!
this is a really good explanation. it will really help me and my friends for our finals
yeaaa i think so!hehe
7 years later, this explanation helped me too
I love you!!! Thank you so much for this video!!
Dude, i got it ! Thank you so much
Great explanation, thanks!
video is a life saver. thanks a ton
Perfect Explanation. Thanks!
great!!!!Fantabulous
3:11 and my heart stopped for a second.
Very well explained, thank you!
Thanks, I'm glad it was helpful! :)
I had my headphones set to 150% volume :(
Really helpful, thanks a lot!
very good lection! Thanks☺☺☺
this is a super good video , thank you sir
Thanks! That dog scared me to death btw, unexpected.
this was super helpful thank you! Do you have a similar presentation for how a adder works? that would pair perfectly with this video.
Nice video.
Very helpful!
Great video! Thanks!!
bro that dog gave me a heart attack lmaooooo
Wow, you explained it so well!!
Appreciated. Really helped me
Thank you for help~ I am the 1000 like~
Thanks for the explanation, I had a hard time understanding the wording in the textbook (whether it's my ESL or the book is just badly written), and this helped me understand!
You are great, keep working.
From where I get other lectures of mips datapath it's just of R type where is J and I type
i really like your video can you please make a video on multi cycle data path
i would really appreciate that
great!
3:10 -> one way to flip over your chair in the library! :)
me keeping sober for more than24 hrs was almost taken to heaven by that dog... But thanks for the great videos!
Amazing explanation
really good explanation thank you!
Thank you so much its helpful :)
please! Can you help me? I am having problems in the Hazard Pipeline section. I want to see how to run to see the command conflict on this MARS software when running the program is not?
Excelent explanation
Much Thanks. Can you tell me where can I find other videos of this course??
Amazing!! Thank you
This is GOLD!
great lecture tnx
I like the explenation and the random jump scare 3:10 ;-)
Scott i got a question , what is the datapath for a sudoperation in MIPS ??
I thought you increment the program counter before you perform all the operations i.e. at the beginning instead of the end? Why is this the case.
I was listening so carefully but the dog almost killed me !!!! lmao
Saved my life
It was really helpful
Dude, your dog scared the beejeezus out of me!
You are a true hero
had my headphones on and that dog scared the hell out of me lol
good expatiation
you're awesome
That dog scared the shit out of me at 3:12
omg i love you and i love your dog
Well that you could make analogy using instructions in assembly
very good expatiation..
Thank you very much ,, you saved me but your dog scared me :p
wow, its good but the dog... i scared for a while,, oh my GOD
nice explanation!! but what is the point of sign-extend and why shift left 2??
the dog though, hahaha. thanks a lot.
It took me some time to digest that block image. Just to explain my first impression: I was surprised that the memory is integrated like this with parts of the CPU on both sides. I was surprised by two ALUs. For the PC use a single ADC and just hard wire the address pins to zero. I don’t get why the sign extend is below the register file. Also sign extension is typically done in the ALU. You just wire all high pins to the sign trace. Nobody not in reality, not for explanation would route the sign extended value over - ah there is a node. I still think that those 4 other crossings should go away.
Maybe things like sign extension and shift don’t belong here like a two-complements isn’t also not explained here.
So MIPS could not decide where to store the write register in the instruction. SH2 could . Why do we care?
Funny how the ALU zero output goes nowhere because MIPS forgot the flags .. of course it goes to branch. I like this. The branching sits in the load store phase, while MIPS claims that the instruction address is ready in the next cycle for the fetch. Maybe there really are two ALUs who calculate both potential new fetch addresses? Then there is a straight connection back from the zero output of the main ALU to a Demux just in front of the program memory? Like after the output latches before the buffers=current amplifier.
I wish you had more videos
The dog scares me a little lmao
That dog scared the shit out of me
oo man u r genius
Thank you
thank you
why instructions add use not memory assecc
What a hero
please do a multi - cycle data path PLEASE !
this is sooo useful for getting a programming job /s
hey is the add command OR format or AND format!!!!
bhebak best video ever
anyone help me for this assignment
You are required to create a simulation of MIPS architecture in your favourite programming language. You should define an object (class) for each of the major components of the architecture. The public members of each object should be:
1. storage element(s) storing the output data of the component
2. function(s) that correspond(s) to the control signals for the component.
While simulating each component, the input to this component should be fetched from the output storage element of the component(s) connected to it in the architecture.
To simplify the design, multiplexers are not considered as separate components, but rather as parts of other components.
A class "machine" should be defined to represent the desired architecture.
It should include the major components of the architecture. Namely, mem_unit, alu, registers,CU, PC_unit and IR_unit. This class has only two public members;
1. a "load_prog" method to read a machine language program from the file and load it to sequential locations of a simulated memory in the class "mem_unit" starting at location zero. "load_prog" should also initialize the program counter to zero.
2. an "execute» which simulates the actual execution of the program and eventually calls within the following method "clock_cycle".
A "clock_cycle" function that simulates what happens during one clock cycle. This function should emulate the finite state machine control, which will require that the class "machine" keep track of the current machine state in a private variable "state”.
Instruction Set: The program should be implemented to execute one of the following subsets of the MIPS Instructions set:
Subset: holds the instructions ori, beq, lw, exit system
Specifically, your machine should recognize the following opcodes in the high order six bits of an instruction, and simulate the execution of that instruction:
0011 01 === ori ?
0001 00 === beq
1001 00 === lw ?
1111 11 === system call to exit.
The exit system call should display the content of the 32 machine registers as well as the allocated memory locations.
Input: The input to your simulation will be a machine language program stored in a file. The file should include a sequence of machine language instructions, each instruction being a 32-bit word encoded in hexadecimal.
Sample codes can be taken from here:
sweetcode.io/building-first-simple-program-mips-assembly-language/
It should be converted to machine language.
Output: The output will be a well formatted display of the content of the 32 machine registers as well as the allocated memory locations (all displayed in hex), when an exit system call is encountered.
This should be followed with the total execution time of the program, in terms of
- Number of cycles: counted in your method.
- Real execution time (in milliseconds): Use System.nanoTime(); at the beginning and end of the "execute" method, then display the difference.
Muito bom- Obrigado
Great video just make sure you dog ate well before starting it :D
thanks
i have to ask you a question, but can't find your email address
illustrative