КАК процессор понимает Go, Java или C++: секреты устройства CPU
Igor Panasyuk
В этом видео мы разбираемся, как процессор понимает программы, написанные на Go, Java или C++. Начнем с простого примера однотактного процессора и рассмотрим основные типы команд, из которых строится вычисление. Поговорим об Instruction Set Architecture на примере MIPS и даже посмотрим демо процессора, реализованного на Verilog, с запуском программы и разбором исходников. Затем перейдем к теме конвейерной микроархитектуры: разберем стадии конвейера на примере MIPSC, поймем, как пайплайн позволяет выполнять параллельно несколько стадий, и сравним разные подходы к параллелизму — от Very long instruction word до superscalar. Особое внимание уделим оптимизации за счет branch prediction. Также рассмотрим устройство регистров на примере x86 и принцип работы счетчика команд (Program Counter), который подсказывает процессору, какую инструкцию исполнять в данный момент. В финале поговорим о SIMD-оптимизациях, которые позволяют выполнять одни и те же операции над массивами данных значительно быстрее. Таймкоды: 00:00 - Введение 00:17 - Пример работы однотактного процессора 01:14 - Типы команд в процессоре. Как понять что исполнять 02:28 - Instruction Set Architecture (ISA) на примере MIPS 03:53 - Демо пример процессора на Verilog 07:41 - Запуск программы на процессоре на Verilog 09:37 - Дополнительные материалы. Исходники к видео 09:48 - Конвейерная микроархитектура 11:18 - Разбор стадий конвейера на примере MIPSC 15:25 - Как пайплайн процессора выполняет параллельно несколько стадий...