Автор уже однажды рассказывал про архитектуру компьютера — ту самую, которая определяет, как наша железная коробка вообще соображает. Но тогда мы говорили о самом верхнем уровне. Сегодня Автор предлагает заглянуть глубже, прямо в самое сердце — в процессор. А точнее, залезть к нему в голову и понять, как именно он «думает».
Здравствуй, дорогой читатель! Это снова Автор, и вы на канале, где сложные вещи становятся простыми.
Обещание будет сложным, но, как всегда, честным. Если вы когда-нибудь слышали загадочные аббревиатуры CISC и RISC, то знайте — это просто две философии, два способа отдавать приказы процессору.
Автору они напоминают названия секретных правительственных агентств. Так давайте разберем их. И используем для этого, как всегда, аналогии. Сегодня с помощью кухни и, конечно, наших старых знакомых — Ильи, Алисы и Арины.
Две кулинарные книги
Представьте, что вам нужно приготовить ужин. Конкретно — яблочный пирог. У вас есть две кулинарные книги.
Книга первая (CISC)
Она для ленивых или очень занятых хозяев. В ней рецепты выглядят так: «Испеките яблочный пирог». Всё. Это одна команда. Но что внутри? Волшебство? Нет, мелкий шрифт, который вы не видите. На самом деле там скрыт целый алгоритм: «Возьми муку, яйца, масло... замеси... почисти яблоки... собери... поставь в духовку... жди... вытащи». Просто книга уже знает, как это делать, и прячет всю сложность за одной фразой.
Книга вторая (RISC)
Это книга для перфекционистов или роботов, которые не умеют в обобщения. Здесь нет команды «испеки пирог». Там написано пошагово:
- Возьми миску.
- Разбей яйцо в миску.
- Насыпь муки.
- Перемешай.
- Возьми нож...
И так 100500 шагов. Команды простые до безобразия, но чтобы получить пирог, их нужно выполнить очень много.
Это и есть главное отличие двух миров.
Помощь Ильи, Алисы и Арины
Но давайте добавим в эту кухню наших старых друзей, чтобы стало совсем кристально ясно. По мнению Автора, через детей любую технологию объяснять проще.
Илья (ему уже 12) — типичный CISC
Илья — опытный кулинар. Он уже не раз пёк этот пирог. Если мама крикнет ему: «Илья, испеки пирог!» — он справится. Он выполнит одну сложную команду. Почему? Потому что у него в голове (в «микропрограммах», если по-научному) уже есть готовая последовательность действий. Процессор CISC устроен так же: у него внутри есть встроенные «рецепты» для сложных операций. Программисту удобно — написал одну команду, а процессор сам разобрался, что с ней делать.
Алиса (ей 4 года) — чистый RISC
Алиса — умная девочка, но она ещё маленькая. Если ей сказать: «Испеки пирог», она просто растеряется. Это слишком сложно. Ей нужно говорить по-другому: «Алиса, возьми стульчик. Алиса, залезь на стул. Алиса, достань муку. Алиса, положи муку...». Каждая команда — элементарное действие. Ей легко их понять и быстро выполнить, даже если она не очень «крутой» повар. RISC-процессор работает точно так же: он не умеет в сложные рецепты, но простые команды он щёлкает как орешки — быстро и с минимальными усилиями.
Зачем это нужно в реальном мире?
Автор часто слышит вопрос: «Ну, допустим, понятно. А почему так?»
В реальности процессоры, конечно, умнее наших примеров и используют элементы обоих подходов. Но вектор задан четко.
CISC (Complex Instruction Set Computer) — это процессоры типа Intel x86, которые стоят в ваших больших компьютерах и ноутбуках, за исключением процессоров Apple и новых Snapdragon.
- Плюс: Программисту (и компилятору) писать код проще. Одна сложная команда вместо кучи простых.
- Минус: Эти сложные команды выполняются долго, могут занимать много тактов и греться. Как Илья: он может всё, но если его заставлять печь пирог каждую минуту, он устанет и начнет потеть (процессор греется).
RISC (Reduced Instruction Set Computer) — это ARM-процессоры. Они у вас в телефонах, планшетах, в «умных» колонках и даже в новых ноутбуках (Apple M1, M2 и т.д.).
- Плюс: Команды простые и короткие. Процессор может выполнять их одну за другой с бешеной скоростью (конвейером). И главное — он тратит мало энергии. Как Алиса: если давать ей простые задачи, она может играть хоть весь день и не устать (батарейка держится долго).
- Минус: Чтобы сделать что-то серьёзное, этих простых команд нужно очень много. Но если они выполняются быстро, то в сумме получается даже лучше, чем у CISC.
Итог
CISC и RISC — это как два способа обучения.
Можно дать ученику сложную инструкцию, если он уже опытный (как Илья). А можно разбить задачу на тысячу простых шагов, которые поймет даже малыш Арина.
Раньше считалось, что CISC — это круто и мощно, а RISC — для бедных. Но времена изменились. Сейчас RISC-подход (благодаря своей энергоэффективности и скорости) захватывает мир.
Подписывайтесь на канал, чтобы не пропустить новые приключения Ильи, Алисы и Арины в мире высоких технологий. В следующий раз Автор обещает залезть в дебри еще глубже!
UPD
Автор намеренно упростил описание до уровня «есть два лагеря», опустив технические детали о длине команд, количестве регистров и методах оптимизации.
В реальном мире границы давно стерлись, и современные CISC-процессоры внутри часто работают как RISC (разбивают сложные команды на простые микрооперации). Для тех, кто хочет копнуть глубже, Автор рекомендует почитать про архитектуры x86/64 (AMD/Intel) и ARM — это и есть главные бойцы на поле CISC и RISC.