| Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
computers_and_computing [2025/10/13 22:49] iadenisov [Второе поколение микропроцессоров] |
computers_and_computing [2025/10/14 00:56] (текущий) iadenisov [Компьютеры и вычисления] |
| Личная точка зрения | Личная точка зрения |
| |
| Никлаус Вирт | Никлаус Вирт, декабрь 2015 |
| |
| Оригинал: | Оригинал: |
| https://people.inf.ethz.ch/wirth/Miscellaneous/ComputersAndComputing.pdf | https://people.inf.ethz.ch/wirth/Miscellaneous/ComputersAndComputing.pdf |
| |
| Перевод: [[https://forum.oberoncore.ru/memberlist.php?mode=viewprofile&u=5636|Dimik]] | Перевод [[https://forum.oberoncore.ru/viewtopic.php?f=30&t=6868&p=119624#p119610|Dimik]] с правками Ивана Денисова |
| | |
| ===== Эпоха становления ===== | ===== Эпоха становления ===== |
| |
| Историки относят зарождение вычислительной техники далеко назад, в средние века. Мы же предпочитаем начать с того момента, когда компьютеры стали коммерчески доступными и обрели роль в бизнесе и науке. Это был 1960 год. | Историки относят зарождение вычислительной техники далеко назад, в средние века. Здесь мы всё же начнём рассказ с момента, когда компьютеры стали коммерчески доступными, и начали играть важную роль в бизнесе и науке. Это было примерно в 1960 году или даже немного раньше. Всего несколько изобретений легли в основу развития такой доступности. |
| |
| До электроники были вакуумные лампы. Ранние компьютеры содержали тысячи таких ламп, которые потребляли много электроэнергии. С их многочисленными лампами и тяжелыми блоками питания компьютеры были монструозными и заполняли целые комнаты. | На физическом уровне, --- это было появление электроники, которое сделало компьютеры предметами интереса. Электроника обеспечила необходимую скорость. До этого времени активными элементами электронных схем были электронные лампы. Нагретые катоды испускали электроны, которые всасывались окружающим анодом. Между ними находилась сетка, позволявшая управлять потоком электронов, прикладывая отрицательное поле. Ранние компьютеры содержали тысячи таких ламп, которые из-за нагрева катода и высокого напряжения на аноде потребляли значительное количество энергии, по нескольку ватт каждая. С их многочисленными лампами и мощными источниками питания эти ранние |
| | компьютеры были довольно огромными и занимали целые комнаты. |
| |
| Инновация Джона фон Неймана (1944г) превратила компьютеры в то, чем они сейчас являются. Раньше они состояли из блока управления и отдельного арифметического блока. Первый последовательно получал инструкции из хранилища инструкций, второй интерпретировал их и изменял данные в хранилище данных. | На логическом уровне, --- инновация Джона фон Неймана в 1944 году превратила компьютеры в то, чем они являются сейчас. Ранее они состояли из блока управления и отдельного арифметического блока. Первый извлекал инструкции из хранилища инструкций одну за другой, второй интерпретировал их и соответствующим образом изменял данные в хранилище данных. |
| |
| {{ :img1.png |}} | {{ :img1.png |}} |
| |
| Фон Нейман ввел две фундаментальные концепции. | Фон Нейман ввел две фундаментальные концепции. Во-первых, два хранилища были объединены. Это позволило компьютеру генерировать данные, а затем интерпретировать их как инструкции. Таким образом, компьютер превратился из специального устройства (со всегда одинаковой программой) в //универсальную машину// --- программируемый компьютер. И это то, что отличает компьютер от всех других технических устройств вплоть до сегодняшнего дня. |
| |
| Во-первых, два блока были объединены. Это позволило компьютеру генерировать данные, а затем интерпретировать их как инструкции. Таким образом, компьютер превратился из специального устройства (с одной и той же программой) в универсальную машину ‒ программируемый компьютер. И именно это отличает компьютер от всех других технических устройств до сегодняшнего дня. | Второй основополагающей идей была условная инструкция. Она имеет различный результат в зависимости от ранее вычисленных значений, т.е. состояния машины. |
| |
| Второй важной концепцией стала инструкция условия. | Все экспериментальные компьютеры, разработанные в качестве прототипов (обычно в университетах, между 1945-м и 1960 годами) использовали эти фундаментальные идеи. |
| |
| Экспериментальные компьютеры, разработанные в качестве прототипов, обычно в университетах, с 1945 по 1960 год, все они использовали эти фундаментальные идеи. | ===== Годы пионеров ===== |
| |
| ===== Годы пионеров ===== | Это было в 1959 году в Квебеке (Канада), когда я впервые имел дело с компьютером. Я записался на курс по численному анализу, который вел профессор Goodspeed (дословный перевод фамилии профессора с английского <<Хорошая скорость>>). Но компьютер не соответствовал имени профессора. На самом деле, он был не только медленным, но и <<падал>> всякий раз, когда мы составляли небольшую программу в качестве части упражнений. Таким образом, мое первое знакомство с компьютером было печальным и обескураживающим. Я не могу объяснить, как я сохранил интерес к вычислительной технике. Однако я чувствовал, что это будет важно в будущем. |
| |
| В 1959 году в Квебеке (Канада) я впервые имел дело с компьютером на курсе по численному анализу, который вел профессор Goodspeed. Но компьютер не соответствовал имени профессора. На самом деле, он был не только медленным, но и "падал" всякий раз, когда мы составляли небольшую программу. Таким образом, мое первое знакомство с компьютером было мрачным и обескураживающим. Я не могу объяснить, как я сохранил интерес к вычислительной технике. Но я чувствовал, что это будет важно в будущем. | Доступным компьютером был Alwac III-3E. Он был основан на тысячах электронных ламп, в основном на двойные триоды, и занимал целую комнату. Срок службы одной лампы 10 000 часов. Следовательно, можно было предположить, что одна из них --- а значит, и вся система --- будет выходить из строя каждые несколько часов. Так и случалось! Программирование осуществлялось путём составления таблиц инструкций в шестнадцатеричном коде. Я подумал, что тут есть потенциал для улучшения. |
| |
| Доступным компьютером был Alwac III-3E c тысячами электронных ламп, и занимавший целую комнату. Срок службы одной лампы 10'000 часов. Можно было рассчитать, что вся система будет умирать каждые несколько часов. Так и происходило! Программирование осуществлялось путем составления таблиц инструкций в шестнадцатеричном коде. Я думал ‒ что в этом был потенциал для улучшения. | Мой второй подход к компьютерам состоялся годом позднее в Беркли. Там был большой компьютер IBM 704, один из первых компьютеров, на транзисторах вместо ламп, и поэтому гораздо более надежный. Доступ к нему был только через колоды перфокарт, которые доставлялись в Вычислительный центр. Карточные колоды от различных клиентов складывались операторами, и система автоматически обрабатывала одну колоду за другой. Это называлось //пакетная обработка//. Результаты можно было получить через несколько часов или даже дней на бесконечной бумаге в виде текстов, состоящих из цифр и заглавных букв. Программирование осуществлялось на новом языке //Фортран// (Трансляция формул). Это было определённым улучшением по сравнению с шестнадцатеричным кодом, но я больше не мог понимать, как проводится управление компьютером. И снова я почувствовал, что есть возможности для совершенствования. |
| |
| Второй раз я попробовал компьютеры через год в Беркли. Там был большой компьютер IBM 704, один из первых компьютеров, на транзисторах вместо ламп, и поэтому гораздо более надежный. Доступ к нему был только через колоды перфокарт, которые доставлялись в Вычислительный центр. Карточные колоды от различных клиентов складывались операторами, и система автоматически обрабатывала одну колоду за другой (пакетная обработка). Результаты были через несколько часов или даже дней, на бумаге, в виде текстов, состоящих из цифр и заглавных букв. Программирование осуществлялось на новом языке Фортран (Трансляция формул). Это было улучшение по сравнению с шестнадцатеричным кодом, но я не мог понять, как работает компьютер. И снова я чувствовал, что здесь есть возможности для совершенствования. | В 1960-1965 годах большие удаленные компьютеры преобладали в мире вычислений. Они назывались //мэйнфреймами// и занимали большие комнаты, оснащённые системами кондиционирования воздуха. Все марки были почти одинаковыми, различаясь размером слов, объемом памяти и, конечно, --- скоростью выполнения. Они имели один или два регистра-аккумулятора. Три нововведения заслуживают упоминания. Первое -- это индексный регистр, значение которого добавляется к адресу операнда во время цикла выборки. |
| |
| В 1960-1965 годах доминировали большие, удаленные компьютеры. Они назывались мэйнфреймами и занимали большие помещения. Все марки были почти одинаковыми, различаясь размером слов, объемом памяти и скоростью выполнения. Они имели один или два регистра аккумулятора. Три нововведения заслуживают упоминания: | --- //[[d.ivan.krsk@gmail.com|Иван Денисов]] вычитал перевод до этого места 2025/10/13 23:52// |
| |
| Первое ‒ это индексный регистр, значение которого добавляется к адресу операнда во время цикла выборки. | |
| |
| Охарактеризуем IBM 704. Он имел память из 32768 (215) слов по 36 бит каждое. В то время наборы символов состояли из 64 (26) символов и размер слов был кратен 6 (6-битные байты!). Числа хранились в знаково-величинной форме: один бит для знака, 35 бит для абсолютного значения. Ядро 704 состояло из 36-битного регистра аккумулятора (в котором якобы накапливались суммы), регистра MQ (в котором хранился множитель и три 15-битных индексных регистра. | Охарактеризуем IBM 704. Он имел память из 32768 (= 2<sup>15</sup>) слов по 36 бит каждое. В то время наборы символов состояли из 64 (= 2<sup>6</sup>) символов и размер слов был кратен 6 (6-битные байты!). Числа хранились в знаково-величинной форме: один бит для знака, 35 бит для абсолютного значения. Ядро 704 состояло из 36-битного регистра-аккумулятора (в котором якобы накапливались суммы), регистра MQ (в котором хранился множитель и три 15-битных индексных регистра. |
| |
| Существовало два формата инструкций: | Существовало два формата инструкций: |
| ===== Сокращенный набор инструкций RISC (1985г) ===== | ===== Сокращенный набор инструкций RISC (1985г) ===== |
| |
| В сфере аппаратного обеспечения мир также становился все сложнее. Полупроводниковая технология достигла огромного прогресса. Стало возможным размещать несколько миллионов транзисторов на одном чипе. Уменьшение размеров привело к уменьшению времени распространения сигнала и к более высокой скорости. Дизайнеры соблазнялись использовать армии доступных транзисторов и включить функции, которые раньше откладывались на потом. Прямым следствием этого стало увеличение количества регистров на кристалле, виртуальная адресация, блоков управления памятью и блоков с плавающей запятой. Помимо этого, память стала больше и быстрее, примерно до 1 МБ на кристалл в 1985 году. Еще одним способом использования транзисторов был сложный набор инструкций, включающий строковые инструкции, инструкции для десятичных и вычислений с плавающей запятой. И еще один способ ‒ это выбор режимов адресации. Наиболее продвинутыми в этом направлении была серия NS 32000 компании National Semiconductor. Они не только предлагали набор адресов длиной 25 (аналогично Lilith), но и большой набор режимов, включая один для связывания модулей. Кроме того, это был первый процессор с 32-битными трактами передачи данных. Но по сравнению с традиционной конструкцией с дискретными компонентами, компьютеры на базе этих чипов (также Intel 80286 и Motorola 680х0), считались медленными. Вопрос какой технологии будет принадлежать будущее, оставался открытым. | В сфере аппаратного обеспечения мир также становился все сложнее. Полупроводниковая технология достигла огромного прогресса. Стало возможным размещать несколько миллионов транзисторов на одном чипе. Уменьшение размеров привело к уменьшению времени распространения сигнала и к более высокой скорости. Дизайнеры соблазнялись использовать армии доступных транзисторов и включить функции, которые раньше откладывались на потом. Прямым следствием этого стало увеличение количества регистров на кристалле, виртуальная адресация, блоков управления памятью и блоков с плавающей запятой. Помимо этого, память стала больше и быстрее, примерно до 1 МБ на кристалл в 1985 году. Еще одним способом использования транзисторов был сложный набор инструкций, включающий строковые инструкции, инструкции для десятичных и вычислений с плавающей запятой. И еще один способ --- это выбор режимов адресации. Наиболее продвинутыми в этом направлении была серия NS 32000 компании National Semiconductor. Они не только предлагали набор адресов длиной 25 (аналогично Lilith), но и большой набор режимов, включая один для связывания модулей. Кроме того, это был первый процессор с 32-битными трактами передачи данных. Но по сравнению с традиционной конструкцией с дискретными компонентами, компьютеры на базе этих чипов (также Intel 80286 и Motorola 680х0), считались медленными. Вопрос какой технологии будет принадлежать будущее, оставался открытым. |
| |
| Решение было принято с появлением Mosfet: полевого транзистора на основе оксида металла - полупроводника. Затвор становится проводящим под действием электронов. В транзисторах с биполярным переходом они вводятся током, подаваемым в слой затвора между истоком и стоком, в полевых транзисторах - путем подачи напряжения на слой, изолированный от канала исток - сток. т.е. за счет эффекта поля. Сегодня (2015г) практически все транзисторы являются FET, и эра биполярных транзисторов подошла к концу. Со стороны архитектуры произошла полная революция. Тенденция к все большему усложнению была остановлена. Новые RISC превосходили по простоте. Как правило, процессор теперь состоял из набора регистров (32 бита), а набор инструкций был сведен к простым логическим инструкциям и инструкциям сложения/вычитания. Даже умножение и деление были исключены. Обоснование такого отхода от традиций в том, что каждая инструкция требует один тактовый цикл и очень быстра. Плотность кода стала иметь ничтожное значение, поскольку память была доступна в больших объемах. Так как, каждая инструкция занимала только один такт, стало возможным одновременное выполнение нескольких инструкций, каждая из которых состоит из 4 - 5 шагов: | Решение было принято с появлением Mosfet: полевого транзистора на основе оксида металла - полупроводника. Затвор становится проводящим под действием электронов. В транзисторах с биполярным переходом они вводятся током, подаваемым в слой затвора между истоком и стоком, в полевых транзисторах - путем подачи напряжения на слой, изолированный от канала исток - сток. т.е. за счет эффекта поля. Сегодня (2015г) практически все транзисторы являются FET, и эра биполярных транзисторов подошла к концу. Со стороны архитектуры произошла полная революция. Тенденция к все большему усложнению была остановлена. Новые RISC превосходили по простоте. Как правило, процессор теперь состоял из набора регистров (32 бита), а набор инструкций был сведен к простым логическим инструкциям и инструкциям сложения/вычитания. Даже умножение и деление были исключены. Обоснование такого отхода от традиций в том, что каждая инструкция требует один тактовый цикл и очень быстра. Плотность кода стала иметь ничтожное значение, поскольку память была доступна в больших объемах. Так как, каждая инструкция занимала только один такт, стало возможным одновременное выполнение нескольких инструкций, каждая из которых состоит из 4 - 5 шагов: |
| |
| |
| Эта концепция называлась "конвейеризация", и существенно повышала скорость. | Эта концепция называлась <<конвейеризация>>, и существенно повышала скорость. |
| Эта схема была предложена в научных кругах (Дж. Хеннесси в Стэнфорде и Д. Паттерсон в Беркли) в 1985 году. В результате появились компании-стартапы: MIPS и SPARC. В Англии развивались аналогичные разработки: Acorn в Кембридже, что привело к созданию архитектуры ARM. Выжила именно архитектура ARM. Однако со временем появлялись новые версии и каждая обладала новыми возможностями такими, какие позволяла миниатюризация транзисторов. Удивительно, но эта система смогла сохранить свой лейбл даже после замены набора инструкций на 16-битные "пальчиковые" инструкции. | |
| |
| | {{ ::img7.png |}} |
| | |
| | Эта схема была предложена в научных кругах (Дж. Хеннесси в Стэнфорде и Д. Паттерсон в Беркли) в 1985 году. В результате появились компании-стартапы: MIPS и SPARC. В Англии развивались аналогичные разработки: Acorn в Кембридже, что привело к созданию архитектуры ARM. Выжила именно архитектура ARM. Однако со временем появлялись новые версии и каждая обладала новыми возможностями такими, какие позволяла миниатюризация транзисторов. Удивительно, но эта система смогла сохранить свой лейбл даже после замены набора инструкций на 16-битные <<пальчиковые>> инструкции. |
| ===== Новая парадигма вычислений (1985г) ===== | ===== Новая парадигма вычислений (1985г) ===== |
| |
| Ввод текста как таковой стал менее важным. Было признано ‒ то что набирается, уже где-то было набрано. Таким образом, указание на этот текст делало повторный набор текста излишним. Можно утверждать, что концепция вьювера революционизировала использование компьютера. Это было прямым следствием новой парадигмы объектно-ориентированного программирования: процедуры (процессы) могут быть присоединены к структурам данных. | Ввод текста как таковой стал менее важным. Было признано ‒ то что набирается, уже где-то было набрано. Таким образом, указание на этот текст делало повторный набор текста излишним. Можно утверждать, что концепция вьювера революционизировала использование компьютера. Это было прямым следствием новой парадигмы объектно-ориентированного программирования: процедуры (процессы) могут быть присоединены к структурам данных. |
| Эта парадигма уже была представлена в языке Simula (1965г), и позднее в языке Smalltalk (1976г), а концепция вьювера является ее самым известным применением. Она была усовершенствована в системе Cedar компании Xerox и перенята системой Oberon. Понятие текстовой единицы программы (модуль) стало четко отделено от единицы выполнения программы (процедуры), что значительно повысило ясность концепции. | Эта парадигма уже была представлена в языке Simula (1965г), и позднее в языке Smalltalk (1976г), а концепция вьювера является ее самым известным применением. Она была усовершенствована в системе Cedar компании Xerox и перенята системой Oberon. Понятие текстовой единицы программы (модуль) стало четко отделено от единицы выполнения программы (процедуры), что значительно повысило ясность концепции. |
| | |
| | {{ ::img8.png |}} |
| |
| Весь этот прогресс в конечном итоге стал возможен только благодаря огромному увеличению объема памяти. После выполнения, процедура не удалялась из памяти, как это делалось при пакетной обработке, она сохранялась в памяти, чтобы иметь быстрый доступ к ней при последующем вызове. | Весь этот прогресс в конечном итоге стал возможен только благодаря огромному увеличению объема памяти. После выполнения, процедура не удалялась из памяти, как это делалось при пакетной обработке, она сохранялась в памяти, чтобы иметь быстрый доступ к ней при последующем вызове. |