--- tags: - "#конспект" - служебное/в_процессе source: - https://moodle-iknt-moodledata.storage.yandexcloud.net/58/6e/586ef09274d71463d14d73e125044a778810f3fd?response-content-disposition=inline%3B%20filename%3DАрхитектура%20компьютера%20ч1-Молодяков_2024.pdf&response-content-type=application%2Fpdf&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=t8GGQUqM8K3HzP3tB2nQ%2F20241102%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20241102T183838Z&X-Amz-SignedHeaders=host&X-Amz-Expires=21562&X-Amz-Signature=1c685e6562a02af88d2a43c1da913abeeaccc0bd1d7ad7c57fe132ca4d666ff8 --- *Глава пипецки длинная, а так как конспект я составляю для себя, конспектить полностью я его не намерен, уж увольте* ## 1.1. Многоуровневая организация и эволюция компьютеров ### Затрагиваемые уровни *Препод пишет, что будем сидеть только на первых пяти, а считаются они снизу вверх очевидно. Страдаем, господамы* ![[Pasted image 20241102215903.png]] Однако в рамках курса говорим только о первых пяти. При этом препод отмечает, что в целях оптимизации нужно иметь представление на 1 уровень ниже, чем используемый ### Эволюция *Приводить длинные описания не буду, ограничуюсь перечислением и кое-где резюме* - Механическая эра - Счеты - Вычисления на зубчатых кольцах - Вычислители для сложения и вычитания - Вычислители для всех арифметических операций - Электронные лампы - Транзисторы - Интегральные схемы - Свербольшие интегральные схемы (появление intel, IBM PC и apple) - Мультипроцессорные системы (5-е и 6-е поколение. Мы тут) ### Веселые законы - **Закон Мура** - количество транзисторов на кристалле удваивается каждые 18 месяцев. (по разным посчетам перестанет выполняться в 2025 году. Уже скоро) - **Закон рока** - стоимость основных фондов, используемых в производстве полупроводников, удваивается каждые четыре года (*для инвесторов походу)*) - **Закон Макрона** - машина, которая бы вас полностью устроила, никак не может стоить меньше $5000 - **Первый натановский закон** - Программное обеспечение – это газ. Оно распространяется и полностью заполняет резервуар, в котором находится - **Ограничение Ландауэра** - Затраты на обработку одного бита не могут быть меньше величины $kT\cdot \ln2$ ## 1.2. Архитектурные принципы фон Неймана ![[Pasted image 20241103005048.png]] После создания первого электронного компьютера ЭНИАК, вышла статья "Предварительное обсуждение логического конструирования электронного вычислительного устройства" за авторством Джона фон Неймана, Г. Голдстайна и А. Берксома. Высказанные там мысли легли в основу архитектурных принципов фон Неймана (тем не менее в реальности мы отошли от них): 1. Компьютер включает связанные между собой Процессор (арифметическое устройство и устройство управления), Память и Устройства ввода-вывода (рис. 1.2). 2. Компьютер обязан работать в двоичке 3. Все в компе должно быть числом (будь то команды, числа, строки и т.д.) 4. Программа лежит на каком-то запоминающем устройстве 5. Программа выполянется в основной памяти, а лежит на энергонезависимой вторичной памяти (*бинари лежать должны на диске, а при исполнении подкачиваться в оперативу*) 6. АЛУ обязано уметь в операции: 1. Сложения 2. Сдвига 3. Логические 7. В компьютере используется параллельный принцип организации вычислительного процесса (операции над двоичными кодами осуществляются одновременно над всеми разрядами) 8. Централизованное последовательное управление при выполнении команд. **Нет конвейера, параллельности, внеочередного выполнения и прочего, что свойственно современным процессорам.** 9. Линейная структура адресации памяти 10. Низкий уровень машинного языка, нет микропрограммируемости *Из отличий с современным железом вижу только пункты 8 и 10. Мы очень любим конвейер, прерывания, параллельность и хотим обмазываться микропрограммированием (ну вернее хотят производители процессора). Также в 6 пункте можно сказать, что наше АЛУ умеет немножко больше чем это* Вообще если вы стремитесь к дотошности, то рекомендую еще ознакомиться с [гарвардской архитектурой ЭВМ](https://ru.wikipedia.org/wiki/Гарвардская_архитектура). В современных компьютерах используется помесь этих двух архитектур в угоду достижения наибольшей производительности. Также различия затрагиваются в главе 4, в разделе 8 при разговоре про многоуровневую кэш-память #### Выполнение команд по программе, хранимой в ЭВМ *Программа, очевидно, хранится в памяти компа. Обычно оперативе* Компьютер читает ячейки подряд. Он читает очередную команду, дешифрует ее, обращается к памяти за операндами если это необходимо, совершает выборку операнда, запись результата в память (если необходимо), переход к следующей команде Адрес следующей команды хранится в специальном регистра. У нас это *ip/eip/rip* Есть и альтернативные пути построения компьютера - Нейронные сети - [Потоковая машина](https://habr.com/ru/articles/122479/) (действиями управляют сами данные) ## 1.3. Магистральная вычислительная структура > [!note]- Шина >Шина - это совокупность линий (проводников на материнской плате), по которым обмениваются информацией компоненты и устройства ПК. *По простяге - несколько линий/дорожек на печатной плате, по которым ходит информация (или проще об этом думать, как о дорожках, которые приходят в компонент)* > [!info]+ Глоссарий > **Магистраль/Канал** - Магистраль/канал – унифицированная подсистема связи структурных частей компьютера, т. е. все устройства подключаются к магистрали одинаково, используют один и тот же набор сигналов, один и тот же алгоритм обмена > > **Линия связи** - провод, по которому передается логический сигнал > > **Шина** - группа линий однотипных сигналов > > **Шина адреса** - шина для передачи адреса параллельным кодом (знакомы из схемотехники). Ширина всегда определяет размер адреса в устройства > > **Шина данных** - передает команды и данные между ОЗУ, процессором и периферийными устройствами. Размеры варьируются от 1 байта и до скольки удобно (обычно до 8 байт). *Обычно именно она становится узким горлышком в архитектуре (controlflow-архитектурах, к которой относится процессора вашего компьютера или ноута)* > > **Шина управления** - Передает управляющие сигналы на периферии. На все устройства налагает требования. Они должны > 1. Распознать свой "адрес" на шине (*обычно его формирует процессор*) > 2. Понимать по сигналам на шине, что от них хочет процессор > 3. Выполнить запрос от процессора и передать через **шину данных** информацию > > В целом эти 3 этапа (или даже на мой взгляд последние 2) формируют "**канальный цикл**", которыми управляют процессор или другое устройство вроде микроконтроллера ![[Pasted image 20241103145010.png]] *Типовая структура канального цикла обмена данными* > [!note]- Строб > **Строб** - управляющий сигнал, который своим уровнем определяет момент выполнения элементом или узлом его функции.; в более общем смысле строб — это любой синхронизирующий сигнал, тактовый сигнал ^[https://spravochnick.ru/definitions/strob-strobiruyuschiy-signal/] > > *Источник не проверенный*