Книга От транзистора до робота читать онлайн бесплатно, автор Сари Лада – Fictionbook, cтраница 2
Сари Лада От транзистора до робота
От транзистора до робота
От транзистора до робота

5

  • 0
Поделиться

Полная версия:

Сари Лада От транзистора до робота

  • + Увеличить шрифт
  • - Уменьшить шрифт

Именно так организована память в компьютере. И именно так работает кэш.

Оперативная память (RAM) — это, грубо говоря, склад через улицу. Большая, вмещает много, но добраться до неё занимает время. В масштабах процессора — целые десятки и сотни тактов ожидания. Для процессора, который делает миллиарды операций в секунду, это катастрофически долго.

Кэш — это стол и ящики. Маленький (мегабайты против гигабайт RAM), но находится прямо на кристалле процессора и работает на его скорости.

Современные процессоры имеют несколько уровней кэша — обычно три.

L1 — самый маленький (32–64 килобайта на ядро) и самый быстрый. Доступ — 4–5 тактов. Это буквально «стол»: то, с чем процессор работает прямо сейчас.

L2 — побольше (256 килобайт — несколько мегабайт), чуть медленнее. 10–20 тактов. Ящик стола.

L3 — самый большой (8–64 мегабайта, иногда больше), общий для всех ядер. 30–50 тактов. Шкаф.

И только если данных нет ни в одном кэше — процессор идёт в RAM. Это называется промах кэша, и это дорого: 100–300 тактов ожидания, в течение которых процессор фактически стоит на месте.

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

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


Рис. 2.2. Иерархия ядер и кэша: L1 и L2 у каждого ядра, общий L3 для всех.


Процессор и тепло: почему ноутбук греется

Вернёмся к тому, с чего начали: горячий ноутбук.

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

Это фундаментальная физика: электрический ток в проводнике всегда порождает тепло. Избежать этого нельзя — можно только управлять им.

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

Современные процессоры умеют динамически менять свою частоту и напряжение в зависимости от нагрузки. Когда ты читаешь статью — частота низкая, тепла мало, батарея расходуется медленно. Открыла тяжёлое приложение — частота растёт, тепло растёт, вентилятор начинает шуметь. Это называется динамическое масштабирование частоты (DVFS — Dynamic Voltage and Frequency Scaling).

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

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

CPU против GPU: два разных подхода к скорости


Рис. 2.3. CPU против GPU: несколько мощных ядер против тысяч простых.


Мы много говорили о центральном процессоре — CPU. Но в современных устройствах почти всегда есть ещё один процессор — графический, GPU (Graphics Processing Unit). И разница между ними — отличная иллюстрация того, что «быстрее» значит разное для разных задач.

CPU — это несколько очень умных и очень быстрых ядер. Современный топовый настольный процессор имеет 8–24 производительных ядра. Каждое ядро может быстро выполнять сложные, разветвлённые последовательности инструкций, справляться с непредсказуемыми задачами, обрабатывать ошибки, управлять другими компонентами. CPU — это универсальный солдат.

GPU — это тысячи маленьких, простых ядер. Видеокарта NVIDIA RTX 4090 содержит 16 384 шейдерных ядра. Каждое из них значительно проще и медленнее одного ядра CPU. Но когда им дают задачу, которую можно разбить на тысячи независимых маленьких подзадач — GPU сокрушает CPU.

Классическая задача для GPU — отрисовка 3D-сцены. На экране миллионы пикселей. Цвет каждого пикселя нужно вычислить на основе геометрии, источников света, текстур, теней. Это независимые вычисления — каждый пиксель не зависит от соседнего. GPU запускает тысячи таких вычислений параллельно и за долю секунды рисует кадр.

А потом оказалось, что та же математика — тысячи параллельных умножений матриц — лежит в основе обучения нейронных сетей. И GPU, созданные для игровой графики, вдруг стали главным инструментом машинного обучения. Именно поэтому сегодня NVIDIA — одна из самых дорогих компаний в мире: её GPU используются не для игр, а для обучения больших языковых моделей.

Смартфоны и современные ноутбуки всё чаще объединяют CPU и GPU в один чип — систему на кристалле (SoC, System on Chip). Кроме того, туда добавляют специализированные блоки: нейронный процессор (NPU) для задач ИИ, видеодекодер, сигнальный процессор для камеры. Это называется гетерогенная архитектура: не один универсальный блок, а оркестр специалистов.

Как процессор «общается» с остальными частями

Процессор — главный, но не единственный. Ему нужно постоянно взаимодействовать с памятью, хранилищем, экраном, клавиатурой, сетью. Как это происходит?

Всё общение идёт через шины — наборы электрических проводников, по которым передаются данные и команды. Главная шина соединяет процессор с оперативной памятью и называется шиной памяти или системной шиной. Есть шины для периферии: PCIe (по ней подключается видеокарта и быстрые SSD), USB, SATA.


Рис. 2.4. Процессор как город: специализированные кварталы соединены шинами данных.


Но современные чипы уходят от классических шин в сторону более сложных межсоединений прямо на кристалле. В упомянутых чипах Apple M вся система — процессор, графика, память — находится на одном кристалле, и данные между ними передаются по внутренним высокоскоростным шинам. Это называется unified memory architecture, единая архитектура памяти: CPU и GPU видят одну и ту же оперативную память без необходимости копировать данные туда-обратно. Отсюда и эффективность.

Когда процессору нужны данные с диска или из сети, он не делает это сам. Он отдаёт команду контроллеру соответствующего устройства: «принеси мне данные оттуда». Пока контроллер работает, процессор может делать что-то другое. Когда данные готовы, контроллер посылает процессору прерывание — сигнал «я готов». Процессор прерывает текущую работу, забирает данные и продолжает. Прерывания происходят сотни тысяч раз в секунду — ты нажала клавишу, пришёл сетевой пакет, таймер сработал, звуковая карта требует следующую порцию звука.

Немного истории: как процессоры стали такими

Intel 4004, 1971 год. Первый коммерческий микропроцессор. 2300 транзисторов, тактовая частота 740 килогерц. Разработан для японского калькулятора Busicom. Производительность — примерно 60 000 операций в секунду.

Intel 8086, 1978 год. Предок всей архитектуры x86, которая до сих пор используется в большинстве персональных компьютеров. 29 000 транзисторов, 5–10 МГц.

Intel Pentium, 1993 год. 3,1 миллиона транзисторов, 60–66 МГц. Первый процессор, который появился в домах по-настоящему массово.

Intel Core 2 Duo, 2006 год. Первый массовый двухъядерный процессор для настольных ПК. Переломный момент: индустрия признала, что путь «быстрее и горячее» исчерпан, и перешла к пути «больше ядер».

Apple M1, 2020 год. 16 миллиардов транзисторов, 5-нанометровый техпроцесс, 8 ядер CPU плюс 8 ядер GPU на одном кристалле. Переломный момент другого рода: в реализации Apple — с унифицированной памятью, тесной интеграцией CPU и GPU на одном кристалле и широким конвейером — ARM-архитектура оказалась эффективнее традиционных x86-ноутбуков.

Apple M4 Max, 2025 год. Около 92 миллиардов транзисторов, 3-нанометровый техпроцесс, до 16 ядер CPU и 40 ядер GPU на одном кристалле. Производительность, которая ещё десять лет назад требовала стойки серверного оборудования.

За 54 года — от 2300 транзисторов до 200 миллиардов. Рост в 87 миллионов раз. Ни одна другая технология в истории человечества не демонстрировала ничего подобного.

Что происходит за долю секунды

Давай пройдём весь путь один раз — медленно, чтобы почувствовать масштаб.

Ты пишешь в мессенджере букву «п» и нажимаешь клавишу.

Контроллер клавиатуры фиксирует нажатие и посылает процессору прерывание. Процессор откладывает текущую задачу, переключается на обработчик прерывания клавиатуры. Обработчик определяет, какая клавиша нажата, — смотрит в таблицу кодов. Код «п» — это число 1087 в кодировке Unicode.

Процессор передаёт это число операционной системе. Та — в фокусное окно (мессенджер). Программа мессенджера принимает символ, добавляет его в строку вводимого текста, просит операционную систему перерисовать текстовое поле. Операционная система передаёт задачу системе отрисовки, которая вычисляет, какие пиксели должны измениться. GPU получает команду отрисовки — и за следующий кадр (менее 16 миллисекунд при 60 кадрах в секунду) обновляет экран.

Ты видишь букву «п» на экране.

Всё это — от нажатия до отображения — занимает единицы миллисекунд. За это время процессор выполнил миллионы инструкций.

И это — простой случай. Нажатие «Отправить» запустит цепочку на порядки длиннее: шифрование, формирование сетевого пакета, передача через Wi-Fi или мобильную сеть, маршрутизация через несколько серверов, доставка собеседнику, его устройство расшифровывает, отображает, посылает уведомление о прочтении обратно.

Почему это важно понимать

Мы живём в мире, где вычислительная мощь стала дешёвой и повсеместной. Смартфон в твоём кармане мощнее суперкомпьютеров 1990-х годов. За этой обыденностью стоит невероятная инженерная работа. Каждое поколение процессоров — это годы исследований, миллиарды долларов инвестиций, решение задач, которые ещё недавно казались нерешаемыми.

Понимать, как работает процессор, полезно не только само по себе. Это меняет то, как ты думаешь о производительности, о том, почему одни программы работают быстро, а другие медленно, о том, почему «больше ядер» не всегда значит «быстрее» для твоей конкретной задачи.

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

Итог: дирижёр миллиардного оркестра

Процессор — это устройство, которое выполняет инструкции. Одну за другой, в строгом порядке, с невероятной скоростью.

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

Конвейер позволяет обрабатывать несколько инструкций одновременно на разных стадиях. Несколько ядер позволяют выполнять несколько потоков инструкций параллельно. Тактовая частота задаёт ритм, но не является единственным показателем скорости.

CPU и GPU — два разных подхода: несколько умных и быстрых ядер против тысяч простых и параллельных. Разные задачи требуют разного.

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

Глава 3. Память: краткосрочная и долгая

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

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

Это принципиальное устройство компьютерной памяти. И чтобы его понять, нужно разобраться в одном ключевом различии — между памятью, которая живёт, пока есть питание, и памятью, которая помнит, даже когда ты всё выключила.

Два типа памяти: рабочий стол и архив

В компьютере есть два принципиально разных вида хранения информации — оперативная память (RAM) и постоянное хранилище (жёсткий диск или SSD). Их часто путают, особенно когда говорят просто «память». Но это совершенно разные вещи, с разными задачами, разными технологиями и разными свойствами.

Самая простая аналогия — рабочий стол и архив.

RAM — это твой рабочий стол. Большой, удобный, всё под рукой. Сюда ты раскладываешь всё, с чем работаешь прямо сейчас: открытые документы, запущенные программы, данные, которые нужны немедленно. Стол быстрый — протянула руку, взяла. Но когда ты уходишь домой — убираешь всё со стола. Завтра он снова пустой.

SSD (или жёсткий диск) — это архив. Шкаф с папками, где хранится всё, что ты когда-либо сохранила: файлы, фотографии, программы, операционная система. Архив медленнее стола — нужно встать, найти нужную папку, достать документ. Зато он никуда не исчезает. Ты можешь уйти на год, вернуться — а все файлы на месте.

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

Именно поэтому несохранённые изменения пропадают при отключении питания: они жили только на столе и не добрались до архива.

Оперативная память: как она устроена

RAM — Random Access Memory, память с произвольным доступом. «Произвольный доступ» означает, что можно мгновенно обратиться к любой ячейке памяти по её адресу — не нужно перематывать ленту с начала, как в старых магнитофонах, не нужно последовательно перебирать содержимое. Указал адрес — получил данные.

Физически современная оперативная память — это тип, называемый DRAM (Dynamic RAM, динамическая оперативная память). Каждый бит хранится в крошечном конденсаторе — элементе, способном удерживать электрический заряд. Заряд есть — единица. Заряда нет — ноль.

Но у конденсаторов есть неприятная особенность: они постепенно разряжаются. Сами по себе, просто со временем. Если ничего не делать, все биты превратятся в нули — данные исчезнут.

Поэтому оперативная память постоянно «обновляется» — специальная схема регулярно считывает каждую ячейку и восстанавливает заряд, если он упал ниже порога. Это происходит тысячи раз в секунду, для каждой ячейки из миллиардов. Именно поэтому она называется «динамической» — данные нужно постоянно поддерживать.

И именно поэтому RAM энергозависима: как только пропадает питание — некому обновлять конденсаторы, заряд утекает, данные исчезают. Секунды — и стол пуст.

Скорость у оперативной памяти впечатляющая: современные планки DDR5 передают данные со скоростью десятков гигабайт в секунду. Это в сотни раз быстрее, чем даже самый быстрый SSD. Именно поэтому процессор работает с данными в RAM, а не напрямую с диска.

Сколько RAM нужно и почему

Объём оперативной памяти определяет, сколько задач компьютер может держать «на столе» одновременно.

Когда RAM заканчивается, операционная система начинает хитрить: она берёт те части памяти, к которым давно не обращались, и временно выгружает их на диск — в так называемый файл подкачки (swap). Когда эти данные снова понадобятся, она загружает их обратно в RAM, попутно выгружая что-то другое.

Технически это работает. Практически — это катастрофа для скорости. Диск в сотни раз медленнее RAM. Когда система начинает активно использовать подкачку, компьютер «тормозит»: всё начинает работать медленно, вентиляторы гудят, диск шуршит. Если ты когда-нибудь сидела и смотрела, как курсор превращается в крутящееся колёсико на несколько секунд — скорее всего, это было оно.

Сколько RAM достаточно? Это быстро меняющийся ответ, но сегодня ориентиры примерно такие. 8 гигабайт — минимум для комфортной работы с офисными задачами. 16 гигабайт — комфорт для большинства пользователей, включая несколько браузерных вкладок, редактирование фото, лёгкий монтаж. 32 гигабайта и больше — профессиональный видеомонтаж, работа с большими таблицами данных, разработка, виртуальные машины.

Один из мифов про компьютеры: «RAM нужно освобождать». Некоторые приложения даже продаются как «очистители памяти». Операционная система сама управляет памятью — и незанятая RAM это не «чистая», а «бесполезная» RAM. Хорошая операционная система всегда держит память максимально заполненной полезными данными, чтобы не ходить лишний раз на диск. На macOS и iOS система особенно агрессивно сжимает данные в памяти, поэтому 90% заполненности — действительно норма и не повод для беспокойства. На Windows высокое потребление памяти тоже в целом нормально: система использует свободную RAM под кэш файлs. Заметные торможения появляются лишь тогда, когда начинается активный сброс данных в файл подкачки на диске — а при 16+ ГБ RAM это случается редко.

Твёрдотельный накопитель: флеш-память и её секреты

Переходим к постоянному хранилищу. Сегодня в большинстве ноутбуков и смартфонов стоит SSD — Solid State Drive, твёрдотельный накопитель. До него царили жёсткие диски — HDD (Hard Disk Drive). Давай разберёмся с обоими.

Жёсткий диск — это механическое устройство. Внутри него вращаются магнитные пластины — «блины» — с огромной скоростью: 5400 или 7200 оборотов в минуту. Над ними скользит магнитная головка, которая считывает и записывает данные, намагничивая крошечные участки поверхности. Намагничен в одну сторону — единица, в другую — ноль.

Это работает. И работало десятилетиями. Но у механики есть неустранимые ограничения: нужно физически переместить головку к нужному месту на диске — а это занимает время, измеряемое в миллисекундах. По меркам процессора — вечность.

SSD работает принципиально иначе. Никаких движущихся частей. Данные хранятся во флеш-памяти — особом типе памяти, которая, в отличие от RAM, не требует питания для хранения данных.

Физически флеш-память построена на транзисторах с плавающим затвором. Обычный транзистор имеет один управляющий электрод — затвор. У флеш-транзистора их два: один управляющий и один «плавающий» — изолированный со всех сторон слоем диэлектрика. На этот плавающий затвор можно загнать электроны и заперть их там. Они никуда не денутся без специального воздействия — изоляция держит.

Есть заряд на плавающем затворе — транзистор ведёт себя иначе, чем без заряда. Это и есть бит. Ноль или единица. Без питания, без обновления, без ухода — просто сидят запертые электроны и хранят информацию.

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

SLC, MLC, TLC, QLC: сколько бит в одной ячейке


Рис. 3.1. Типы ячеек флеш-памяти: чем больше бит в ячейке, тем ниже ресурс записи.


Самое простое устройство флеш-ячейки — SLC, Single Level Cell. Одна ячейка хранит один бит: заряд есть или нет. Просто, надёжно, быстро — и дорого, потому что на единицу площади помещается мало данных.

Инженеры решили: а что, если различать не два уровня заряда, а четыре? Тогда одна ячейка хранит два бита: 00, 01, 10, 11 — четыре состояния вместо двух. Это MLC, Multi Level Cell. Плотность удваивается, цена снижается.

Потом пошли дальше: восемь уровней заряда в одной ячейке — три бита. TLC, Triple Level Cell. Именно этот тип стоит в большинстве потребительских SSD и смартфонов сегодня.

И наконец QLC — Quad Level Cell: шестнадцать уровней, четыре бита. Максимальная плотность, минимальная цена. Используется в недорогих накопителях и флеш-накопителях большого объёма.

Но за плотность приходится платить. Чем больше уровней нужно различать, тем точнее должен быть контроллер при чтении и записи. Разница между соседними уровнями заряда становится всё меньше — и тем сложнее их надёжно различить. Результат: QLC медленнее SLC, быстрее деградирует и менее надёжна.

Для обычного пользователя это практически незаметно — современные контроллеры SSD делают огромную работу по исправлению ошибок и управлению ресурсом. Но профессионалы, которым нужна максимальная надёжность и скорость, — выбирают SLC или MLC, платя за это значительно больше.

Почему SSD изнашивается — и почему это не страшно

Флеш-память имеет ограниченный ресурс записи. Каждый раз, когда ты записываешь данные в ячейку, слой изоляции вокруг плавающего затвора чуть-чуть деградирует. После определённого количества циклов записи ячейка перестаёт надёжно удерживать заряд — становится «битой».

Для современных 3D TLC-ячеек ресурс составляет порядка 3000–5000 циклов перезаписи на одну ячейку. Для QLC — около 1000–1500 циклов: именно поэтому QLC-накопители дёшевы, но менее долговечны при интенсивной записи. Звучит мало. Но контроллер SSD применяет технологию, называемую выравниванием износа (wear leveling): он следит за тем, чтобы данные равномерно распределялись по всем ячейкам, а не писались постоянно в одни и те же. Так нагрузка размазывается по всему накопителю, и реальный срок службы оказывается многолетним даже при интенсивном использовании. TLC — золотая середина для большинства пользователей; QLC стоит выбирать только если накопитель нужен для хранения, а не для постоянной перезаписи.

Производители указывают ресурс SSD в TBW — Terabytes Written, терабайт записанных данных. Типичный потребительский SSD на 1 терабайт имеет ресурс 300–600 TBW. Если ты записываешь 50 гигабайт в день (что очень много для обычного пользователя), это 18 терабайт в год. До исчерпания ресурса — 15–30 лет.

Есть ещё одна особенность флеш-памяти, которая влияет на скорость: перед записью нового значения ячейку нужно сначала стереть. И стереть нельзя по одной ячейке — только блоками, которые содержат тысячи ячеек сразу. Это создаёт интересную ситуацию: запись маленького файла может требовать считывания целого блока, его изменения и обратной записи — даже если менялась одна ячейка. Это называется write amplification, усиление записи, и хороший контроллер минимизирует это через хитрые алгоритмы управления данными.

NVMe, SATA, eMMC: буквы, которые определяют скорость

SSD подключаются к компьютеру по-разному, и это сильно влияет на скорость.

SATA — старый стандарт, разработанный ещё для жёстких дисков. Максимальная скорость передачи данных — около 550 мегабайт в секунду. Для первых SSD это было революцией по сравнению с HDD (100–150 МБ/с). Но интерфейс стал узким местом: флеш-память способна на большее.

NVMe — новый стандарт, разработанный специально для флеш-памяти, подключается через шину PCIe напрямую к процессору. Скорость — 3500–7000 мегабайт в секунду для современных накопителей. В 10 раз быстрее SATA. Именно NVMe стоит в большинстве современных ноутбуков и настольных ПК.

ВходРегистрация
Забыли пароль