Уровни железа

В прошлых статьях мы говорили, что языки верхнего уровня транслируются в ассемблер, дальше в машинный код и потом он попадает в процессор. В этой статье распишем про каждый уровень железа и что там происходит.

Всего таких уровней шесть: языки верхнего уровня, ассемблер, ОСка, ISA, микроархитектура и цифровой.
Каждый нижний уровень знает как перевести уровень над ним. Трансляторы знают как перевести ЯП в ассемблер, а цифровой уровень выполняет команды с микроархитектуры.

Чем ниже уровень, тем быстрее и непонятней язык

Языки верхнего уровня

Их много, они лаконичные и понятные для человека со знанием английского, чаще всего в описании кода используют словесные команды.
Некоторые языки из-за способов типизации данных и трансляции часто занимают лишнюю память + нужны ресурсы для транслятора в ассемблер.

def binary(decimal_number):
    if decimal_number == 0:
        return '0'

    binary_number = ''

    while decimal_number > 0:
        bit = decimal_number % 2
        binary_number = str(bit) + binary_number
        decimal_number = (decimal_number - bit) // 2

    return binary_number

Ассемблер

Это тоже язык программирования, но нижнего уровня. Тут гораздо меньше команд, нет библиотек, есть доступ к регистрам процессора, и программист должен обращаться к памяти напрямую по шестнадцатеричному адресу.
После этого уровня идёт уровень ОС, потому что ядро всех операционок пишут на смеси ассемблера и Си.

section .data
    msg  db  'Hello, World!', 10, 0
    len  equ  $ - msg

section .text
global start

start:
    mov rax, 0x2000004      ; Запускаем системный вызов для записи
    mov rbx, 1              ; Указываем поток std out для вывода
    mov rsi, msg            ; Указываем ссылку на сообщение для вывода
    mov rdx, len            ; Указываем длину сообщения для вывода
    syscall                 ; Вызываем прерывание процессора для вывода сообщения

    mov rax, 0x2000001      ; Запускаем системный вызов для завершения программы
    mov rbx, 0
    syscall

Операционная система

Уровень ОС — смесь команд следующего уровня ISA и системных вызовов ОС. То есть команды с линукса смешиваются с командами для x86 процессоров и выстраиваются в программу.

Команды ISA

Это набор команд процессора или же его машинный язык, они работают посредником между микроархитектурой и ОС.
ISA имеет доступ ко всем ресурсам компьютера: оперативная память и кэш-память, ядро ОС и его память, системные данные.

Чтобы работать с железом, у ISA есть два режима: привилегированный и пользовательский.

  • Привилегированный режим позволяет делать всё: чтение и запись данных из памяти ядра, обращения к глобальным системным данным, изменить нагрузку на ядра процессора и другие опасные штуки. В этом режиме работает ОСка.
  • Пользовательский режим не позволяет совершать опасные для железа операции. В этом режиме пользователь запускает прикладные программы.
    Команды ISA интерпретируются микропрограммой в ПЗУ, это там находится BIOS.

Язык микроархитектуры

Микроархитектурой называется железо процессора — тракт данных, конвейер команд и интерпретатор для ISAшных команд в ПЗУ, его называют микропрограммой .

Тракт данных — группа 32-разрядных регистров, арифметико-логическое устройство с двумя входами, и шины для передачи данных.
Для упрощения программирования, каждый регистр носит название своей команды ISA:

  • LV, local value — указывает на локальную переменную
  • SP, stack pointer — указатель на начало стека
  • TOS, top of the stack — вершина стека

Конвейер — система для ускорения выполнения команд. Команды на конвейере обрабатываются в несколько шагов и выполняются параллельно. К тому же, все современные процессоры многоядерные, а это получается еще одна степень параллельности.

Цифровой логический уровень.

На этом уровне цифровые схемы получают команды микроархитектуры в виде сигналов 0 и 1. Всё на этом уровне называется вентилями и состоит из транзисторов.

Несколько транзисторов образует вентиль, а несколько вентилей образуют 1 бит памяти. В одном бите можно хранить 0 или 1. Группы битов образуют байты, килобайты и так далее, в которых хранятся данные.

Можно копнуть еще глубже и спуститься на физический уровень, но это уже физика твёрдых тел и электротехника. На хабре есть хороший разбор самого нижнего уровня.

Поделиться
Отправить
Запинить
 48   1 мес  
Популярное