*Это памятка, которую я взял на курсе Архитектура компьютеров в cousera.

Разница между архитектурой (ISA) и микроархитектурой

В лекции «архитектура» объясняется как уровень абстракции, предоставляемый программному обеспечению, и это Архитектура набора инструкций (ISA).

Это не что-то вроде того, сколько чипов нужно встроить или как вы делаете схему.

Это то, как теоретически работает компьютер, когда он разработан определенным образом.

Когда вы думаете, сколько процессоров построить или как организовать, это «микроархитектура».

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

Поскольку и ISA, и микроархитектура слишком концептуальны, было бы лучше задать несколько конкретных вопросов, за которые отвечает каждая из них.

Уровень ISA имеет значение

  • Как получить доступ к памяти? (например, эти четыре шаблона)

Уровень микроархитектуры имеет значение

  • Что, если процессору может потребоваться доступ к памяти, где ISA спроектирована как операция «регистр, регистр, регистр»?

Практическое применение

1. Виртуальная машина Java (JVM)

Хотя стековая архитектура в машинной модели использовалась в начале истории, она по-прежнему популярна и доказывает свою практическую полезность. Я имею в виду следующий факт.

Виртуальная машина Java построена на стековой архитектуре.

Согласно википедии, он работает 32 бита и имеет стек 65535 операндов и такое же количество локальных переменных.

Каждый поток JVM также имеет свой собственный стек вызовов (называемый для ясности стеком виртуальной машины Java), в котором хранятся кадры. Каждый раз при вызове метода создается новый кадр, который уничтожается при выходе из этого метода.

Каждый фрейм предоставляет стек операндов и массив локальных переменных. Стек операндов используется для операндов вычислений и для получения возвращаемого значения вызываемого метода, а локальные переменные служат той же цели, что и регистры, а также используются для передачи аргументов метода. Таким образом, JVM является одновременно стековой машиной и регистровой машиной. (википедия)

Круто, не правда ли? 🚀

2. Вытягивание образа Docker

Когда вы извлечете образ докера, вы увидите раскрывающийся список ISA.

Итак, какую ISA использует мой компьютер? 🤔

Ну, вы можете проверить тип процессора по

# ---Mac---
$ system_profiler SPHardwareDataType
 or
$ sysctl -a | grep machdep.cpu
# ---Linux---
$ less /proc/cpuinfo
or
$ lshw -class processor

Я проверил процессор, используемый на моем ПК, и обнаружил, что

Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

А я смотрю в гугле и понимаю, что:

Core i7–7700HQ — 64-разрядный четырехъядерный высокопроизводительный мобильный микропроцессор x86, представленный Intel в начале 2017 года.
ресурс) https:/ /en.wikichip.org/wiki/intel/core_i7/i7-7700hq

Таким образом, в DockerHub мне нужно выбрать «linux x86–64 (последняя)» из выпадающего списка. 👍

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

Таким образом, я хочу сосредоточиться на том, где лежат эти теоретические вещи.

Надеюсь, что этот пост вас немного заинтересует и заставит открыть дверь в компьютерную науку/компьютерную архитектуру.

использованная литература