4. Assembly Language & Computer Architecture

preview_player
Показать описание
MIT 6.172 Performance Engineering of Software Systems, Fall 2018
Instructor: Charles Leiserson

Prof. Leiserson walks through the stages of code from source code to compilation to machine code to hardware interpretation and, finally, to execution.

License: Creative Commons BY-NC-SA
Рекомендации по теме
Комментарии
Автор

I do not have the prerequisites to be watching this video, but still watched the whole thing, learning a lot about something I know nothing about.

jellyjams
Автор

A friend and I were taking an x86 assembly language class together back when we were working on our Computer Science degrees. We worked at Intel at the time. At some point during the semester the instructor discovered that we were Intel employees. We worked in the Memory Components Group at that time and had nothing to do with CPU products. Even so, from that point on, whenever he was explaining some of the peculiarities of the x86 architecture, he jokingly glared at us as if it were our fault. He would say, "Why does this instruction work the way it does? Because Intel decided that's the way it is." And look directly at us. We both got an A in the class.

ModusPonenz
Автор

12:45:  “My experience is that if you really want to understand something, you want to understand it to the level that’s necessary, and then one level below that; it’s not that you’ll necessarily use that one level below it, but that gives you insight as to why that layer is what it is, and what’s really going on”

icantollie
Автор

Prof. Leiserson is an amazing instructor. I love watching his lectures. He never rushes off with the material and always prioritizes quality over the quantity. Thank you Prof. Leiserson and MIT OCW🙏🏽

div
Автор

I just love how you can see that he loves his job and that he truly enjoys teaching. Thank you for sharing this lecture!

יונתןלוברסקי-זז
Автор

*My takeaways:*
1. Assembly language 0:22
- Why we want to have a look the assembly language 6:46
- Expectation of students 10:05
- If you really want to understand something, you should understand one level below what you normally need to use 12:20
2. X86-64 ISA primer 13:28
- 4 important concept: Registers 14:03, Instructions 20:25, data types 28:15 and memory addressing modes 35:50
- Assembly idiom 43:08
3. Floating-point and vector hardware 47:54: SIMD
4. Overview of computer architecture 56:55
- Historically, computer architects have aimed to improve processor performance by exploit parallelism (e.g. instruction-level parallelism (ILP), vectorization, multicore) and locality (caching)
- ILP 1:00:35: pipelining, pipeline stall, hazards
- Superscalar processing 1:09:08
- Out-of-order execution 1:11:40: bypassing, from in-order to out-of-order, register renaming
- Branch prediction 1:15:44: speculative execution

leixun
Автор

I used to teach Assembly Language, DOS, CPU Architecture and the instruction set timing and bus cycle operation for several systems. Including the DEC PDP 11, Intel MCS86 and MCS 51 and earlier. My class started with Hardware operation from the point of the first clock pulse from the release of the reset button. Including Machine Instruction and Bus cycles and how instruction execution controlled hardware operation. We also introduced Hardware Emulators. To support the class, I wrote a Text Book on the Theory and Operation of Microprocessor Hardware and Software. The Z-80 / 8080 CPUs were used as the example architecture. My class supported the NTX 2000 NATO Telephone Switching System Back in 1980 for NATO & ITT at the introduction of Fully Integrated Digital Switching Systems for Central Office Telephone Switches. basically, 256 Microprocessors operating in fully redundant pairs, all under the control of a custom minicomputer executing a Real Time, Multi-tasking Operating System.

wmffmw
Автор

Thank you SO MUCH for putting this online!! I'm writing an assembler by myself to actually really understand Assembly and machine code, and this one is an eye-opener in so many ways for me

fluctura
Автор

12:46 My experience is that if you really want to understand something, you want to understand it to level that's necessary and then one level below that.

sikendongol
Автор

Charles Eric Leiserson is a computer scientist, specializing in the theory of parallel computing and distributed computing, and particularly practical applications thereof. As part of this effort, he developed the Cilk multithreaded language. He invented the fat-tree interconnection network, a hardware-universal interconnection network used in many supercomputers, including the Connection Machine CM5, for which he was network architect. He helped pioneer the development of VLSI theory, including the retiming method of digital optimization with James B. Saxe and systolic arrays with H. T. Kung. He conceived of the notion of cache-oblivious algorithms, which are algorithms that have no tuning parameters for cache size or cache-line length, but nevertheless use cache near-optimally. He developed the Cilk language for multithreaded programming, which uses a provably good work-stealing algorithm for scheduling. Leiserson coauthored the standard algorithms textbook Introduction to Algorithms together with Thomas H. Cormen, Ronald L. Rivest, and Clifford Stein.

Leiserson received a B.S. degree in computer science and mathematics from Yale University in 1975 and a Ph.D. degree in computer science from Carnegie Mellon University in 1981, where his advisors were Jon Bentley and H. T. Kung.[2]

He then joined the faculty of the Massachusetts Institute of Technology, where he is now a professor. In addition, he is a principal in the Theory of Computation research group in the MIT Computer Science and Artificial Intelligence Laboratory, and he was formerly director of research and director of system architecture for Akamai Technologies. He was Founder and chief technology officer of Cilk Arts, Inc., a start-up that developed Cilk technology for multicore computing applications. (Cilk Arts, Inc. was acquired by Intel in 2009.)

Leiserson's dissertation, Area-Efficient VLSI Computation, won the first ACM Doctoral Dissertation Award. In 1985, the National Science Foundation awarded him a Presidential Young Investigator Award. He is a Fellow of the Association for Computing Machinery (ACM), the American Association for the Advancement of Science (AAAS), the Institute of Electrical and Electronics Engineers (IEEE), and the Society for Industrial and Applied Mathematics (SIAM). He received the 2014 Taylor L. Booth Education Award from the IEEE Computer Society "for worldwide computer science education impact through writing a best-selling algorithms textbook, and developing courses on algorithms and parallel programming." He received the 2014 ACM-IEEE Computer Society Ken Kennedy Award for his "enduring influence on parallel computing systems and their adoption into mainstream use through scholarly research and development." He was also cited for "distinguished mentoring of computer science leaders and students." He received the 2013 ACM Paris Kanellakis Theory and Practice Award for "contributions to robust parallel and distributed computing."

WIKIPEDIA

skywatchers
Автор

Joyful to watch, even as an entertainment.
Assembly is very fun to do. Maybe a suicidal task if doing something for normal OS, but pure joy when there is none such thing as OS, no C, and starting barely from scratch - uC-s, for example!

madyogi
Автор

im learning assembly on z80 and now, after watching half of this course, thinking about moving to C and hand compiling required optimised assembly...this playlist is great stuff... sure alot of it i wont need.. but its nice to see not much has changed in the x86-64 world...
big thanks to MIT for sharing this stuff with us all :)

WacKEDmaN
Автор

When I went to City College back in the late '70s, Assembly Language was commonly taught. Today, nobody worries about assembler except people who need extreme performance and compiler writers. I used to work at a shop that wrote almost all their software in Assembly. Nobody does that anymore,

Rfc
Автор

It became more clear to me while I started doing digital electronics projects myself and what is amazing I come up to the ideas that someone has already invented but it is amazing sometimes to invent it myself! It is like exploring history or archeology and you find out what is going on with your computer.

grzesiekx
Автор

Thank you so much MIT and Professor Leiserson!!
I write primarily to a VM (JVM via Kotlin) which compiles to Java Bytecode... I am loving that I get almost 2 levels of abstraction down by working through these lectures' n C... I mean I wasn't oblivious but didn't learn assembly as I should have.

headoverbars
Автор

By far the best intro to x86 assembly I’ve ever seen

Jeremygee
Автор

What a great mindset! 13:19 : `` Go one step beyond, and then you can come back!``

Ali-klql
Автор

13:10 The one level below & one step beyond learning philosophy is something I've followed as well.

therealb
Автор

My introduction to assembly language was on a TRS-80 back in the day. Found I could speed things by poking values into memory. Then got the assembler and life was fantastic. And i still remember the video addrs 3c00 to 3fff

kds
Автор

Since it wasn't mentioned, the older 8/16 bit systems often used bank switching to access more hardware resources within the 64KB address space. The CPU could only see 64KB at a time, but the hardware mappings within the 64KB could be changed on the fly as is possible with the Commodore 64.

GamerX