Неймановская архитектура компьютера

Не-фон неймановский компьютер на базе комбинаторной логики

Неймановская архитектура компьютера

Здравствуйте. В этой статье я расскажу про свой хобби-проект не-фон неймановского компьютера. Архитектура соответствует функциональной парадигме: программа есть дерево применений элементарных функций друг к другу.

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

Сейчас готов ранний прототип, существующий как в виде потактового программного симулятора, так и в виде реализации на ПЛИС.

Идеология

ЭВМ традиционной архитектуры изменили мир, но период невероятного, опьяняющего роста видимо закончен. Один из основных ограничивающих факторов — бутылочное горло между процессором и памятью, препятствующее параллелизации.

Функциональное программирование — привлекательное направление ухода от ограничений фон неймановской, централизованной архитектуры, однако попытки создать архитектуру ЭВМ на базе функционального подхода не имели успеха.

Но время идёт, технологии микроэлектроники совершенствуются и становятся более демократичными.

Я пробую делать свой компьютер на базе комбинаторной логики. Вычислительная задача формулируется как выражение — дерево применений функций-комбинаторов друг к другу:

// простая арифметика на языке комбинаторной логики (классический способ представления)2+3 = + 2 3 = + ( +1 1 ) ( +1 1 1 ) = + ( +1 1 ) ( +1 +1 1 )« «si`k`s«s`ksk «s«s`ksk i «s«s`ksk «s«s`ksk i
Выполнение программы понимается как трансформация этого выражения в некоторую простую форму, дающую ответ. Система полна по Тьюрингу, у чего есть обратная сторона: не всякое выражение удаётся вычислить. Подробнее о том, как посчитать что-то с помощью комбинаторной логики смотрите тут и тут.

Архитектура

Основная идея — разместить дерево программы на аппаратном дереве ячеек, способных применять комбинаторы.

Зачем аппаратное дерево? Дело в том, что когда мы проецируем дерево программы на привычное нам одномерное адресное пространство, неизбежно возникают нелокальные, «длинные» связи.

Вот пример плоской записи древовидного выражения: «(A*B) + (C*D) — E» Здесь «+» является источником данных для «-«, но в формуле они разнесены.

Непересекающиеся поддеревья можно вычислять независимо и одновременно, отсюда естественный параллелизм.

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

Итак, у нас есть дерево применений одних функций к другим, где листья — элементарные функции, в случае комбинаторной логики это базовые комбинаторы, например, набор S, K, I:Ix = Ix = x — тождественное отображениеKxy = (Kx)y = x — конструктор константSxyz = ((Sx)y)z = (xz)(yz) — коннектор
SKI на аппаратном дереве

Синтаксис для ассемблера позаимствуем у эзотерического функционального языка программирования unlambda (как и было обещано в этой публикации, в самом конце):

`ix = Ix«kxy = (Kx)y«`sxyz = ((Sx)y)z
Это решение позволяет использовать интерпретатор unlambda для проверки корректности вычислений. Здесь штрих (`) -символ применения функции. Используется префиксная запись, то есть `fx = f(x). F( G(X,Y), H(Z,V) ) = «F«GXY«HZV Именно в такой форме выражение подаётся на вход машины. Загрузка происходит через корень дерева, внешнее устройство посимвольно передаёт программу корневому узлу, который первый символ забирает себе, а оставшуюся часть передаёт своим потомкам, каждый из которых выполняет процедуру загрузки рекурсивно. Получив поддерево полностью, узел сообщает об этом предку и начинает выполнять свою часть программы.

Примеры работы

Для примера вычислим булевское выражение, «(1|0)&(0|1)». В комбинаторном базисе это можно представить как ««ssk««siik`ki««sii`kik Да, такие выражения невозможно читать, но их можно писать см. учебник.

В результате выполнения программы такого вида, состояние машины будет эволюционировать от первоначальной формулы к единственному булевскому значению, либо «1», закодированное как «k», либо значение «0» в виде «`ki».

Для данной конкретной формулы получаем именно «k». На вычисление уходит 116 тактов. Из них первые 67 тактов продолжается загрузка программы.

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

Симулятор и ПЛИС-версия

Описываемые результаты получены на программном симуляторе. Исходники и исполняемый файл для win здесь. Симулятор — консольное приложение, установки не требует, комбинаторное выражение передаётся как параметр командной строки.

Краткое описание окна симулятора в интерактивном режиме 1) Программа на входе 2) Текущее состояние программы в виде текста 3) Полное состояние аппаратного дерева 4) Расшифровка состояния текущего узла
Здесь небольшой ролик с демонстрацией
Симулятор точно соответствует реализованной на verilog-е ПЛИС-версии, но с одним принципиальным отличием — он не ограничен по физическим ресурсам. То есть, симулятор обладает потенциально бесконечным деревом, а на ПЛИС дерево ограничено. Дерево из 63 узлов, то есть глубины 6, занимает 16000 Altera LE, это много; если программа в процессе вычисления вырастает больше, то вычисления заканчиваются неудачей. Единственная польза от аппаратной версии — показать принципиальную реализуемость в железе.

Вернёмся к вычислениям. Теперь посчитаем арифметическое выражение, (2+1). Чтобы перевести это на язык комбинаторной логики используем нумералы Чёрча. Получаем выражение ««si`k`s«s`kski«s«s`kski. Чтобы получить что-то осмысленное, подставим это выражение вот так: «(2+1)ki. Вычислив это получим `k`k`ki, количество букв к символизирует полученный ответ. На вычисление уходит 124 такта. А вот на вычисление «(1+2)ki уходит уже 243 такта, на «(3+3)ki 380 тактов. Увы, пока всё очень медленно, ниже я наметил пути ускорения.

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

`Yx = `x`Yx = `x`x`Yx = `x`x`x`x…
Y(x)= x(Y(x))= x(x(x(x(…))))

Гипотетические применения комбинаторной машины на практике

На приведённых выше двух простых примерах видно, что булевские вычисления выглядят интереснее арифметики, машина очень чувствительна к размеру объектов.

Но вычисление булевских выражений само по себе малоперспективно: задача даже на последовательной машине выполняется за О(1), то есть, программа будет грузиться дольше чем выполняться.

Этого «недостатка» лишена задача SAT.

Здесь у нас булевское выражение дополняется переменными, и надо определить, выполняется ли формула; это уже NP-полная проблема. Можно добиться значительного ускорения, одновременно проверяя несколько наборов значений переменных.

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

Идеальная задача должна формулироваться маленьким выражением, которое сначала растёт как дерево из семечка, формируя как можно больше параллельно вычисляющихся веток, а затем сворачиваться обратно, комбинируя результаты от веток, что-то вроде микро MapReduce:

Реконфигурируемые вычисления

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

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

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

Мы проделали почти то же самое выше, когда применяли Чёрчевское число (3+3) к комбинаторам к и i, которые не выполнялись (в качестве функций) в процессе вычислений, а служили для наглядного представления результата. Заменив к на однобитный сумматор, мы бы получили к моменту завершения вычислений условный сумматор разрядности 6.

Это потенциальное применение не столь требовательно к производительности, при условии, что переконфигурирование требуется не слишком часто.

Направления развития, проблемы и их возможные решения

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

Как-то так, слева выражение, справа его укладка на гипотетической аппаратуре

Но любой граф конечен, а многие функциональные выражения имеют тенденцию к неограниченному росту, особенно при энергичном исполнении; это ещё одна проблема, которую в будущем надо решать.

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

Расширение системы команд

Определённую выгоду в смысле оптимизации можно получить, расширяя набор аппаратно реализованных комбинаторов, сейчас используется базисный набор SKI, возможно будут полезны другие комбинаторы, в том числеBxyz = x(yz) — композиция х и y Cxyz = xzy — перестановщик, Wxy = xyy — удвоитель, Yx = x(Yx) — комбинатор неподвижной точки.(+1)nfx = f(nfx) — инкремент Чёрчевского числа Ввода-вывода как такового сейчас нет, ответ даёт само тело программы, трансформированное в ходе выполнения. Мысли как можно было-бы реализовать IO есть, но пока эта задача у меня не приоритетна. Сейчас машина использует передачу параметров по значению, что приводит к необходимости копировать аргументы, собственно, большую часть времени машина занимается копированием. Реализовать передачу по ссылке было бы архи заманчиво, у программного интерпретатора эффективность от такого перехода взлетает на порядки! Как это реализовать на аппаратной сети узлов, я пока слабо представляю, но когда появится ориентировочная практическая задача, намерен серьёзно этим заняться. Ещё одна функция, потенциально расширяющая возможности машины,- аппаратное сопоставление с образцом, в частности, проверка поддеревьев на равенство. Повышение уровня программирования также в списке приоритетных задач, пока все силы идут на улучшение симулятора.

О лямбдах

Куда более успешной сестрой комбинаторной логики является лямбда-исчисление. Можно ли модифицировать вычислительное дерево под этот вариант функционального программирования? В принципе да.

неприятность в том, что у нас появляется потенциально бесконечное количество имён переменных, а значит вызов переменной нельзя уложить на один аппаратный узел (конечный). Но это решаемо; в принципе, можно перейти на лямбда-исчисление, как на более популярную модель.

Я остановился на комбинаторной логике, поскольку комбинаторы изящнее проецируются на операции с поддеревьями.

Предыстория

Идею создать специализированный вычислитель функциональных программ я перенял у своего научного руководителя, Вадима Николаевича Фалька, когда учился в аспирантуре МИРЭА десяток лет назад.

Научная работа команды фокусировалась на теоретических исследованиях в области функционального и функционально-логического программирования. В частности, Фальком был разработан язык Falgol, своего рода функциональный ассемблер.

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

Я занимался немного другим и не особо преуспел, если честно, но идея создать функционально-логический вычислитель посеялась и через 10 лет таки проросла. Всё это время я работал системным программистом в компании разрабатывающей железо, в том числе микросхемы, что позволило мне освоить основы цифровой схемотехники, и довести дело до аппаратного прототипа.

Заключение

Проект продвигается. Удалось создать прототип не фон неймановского компьютера, сочетающего черты несколько интересных парадигм: функциональное программирование, клеточные автоматы; аналоги мне не известны.

ПЛИС-вариант пока малополезен в силу ограничений по ёмкости, но программный симулятор точно соответствующий аппаратной модели позволяет изучать выполнение программ. О практическом использовании в нынешнем виде речи не идёт, но я уже ищу модельную задачу, которая будет взята как цель для будущего применения машины.

Напоследок ещё раз отмечу, что современное развитие электроники позволяет реализовывать весьма нетривиальные идеи, хотя дело это и трудоёмкое. Спасибо за внимание.

Ссылки

Р. В. Душкин aka darkus «Комбинаторы это просто»
David Madore «The Unlambda Programming Language»
Интерпретатор языка unlambda

  • архитектура ЭВМ
  • комбинаторная логика
  • unlambda
  • клеточные автоматы

Источник: https://habr.com/post/249413/

Архитектура фон Неймана (стр. 1 из 4)

Неймановская архитектура компьютера

Архитектура фон Неймана (англ. von Neumann architecture) — широко известный принцип совместного хранения программ и данных в памяти компьютера.

Вычислительные системы такого рода часто обозначают термином «машина фон Неймана», однако, соответствие этих понятий не всегда однозначно.

В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных.

Наличие заданного набора исполняемых команд и программ было характерной чертой первых компьютерных систем. Сегодня подобный дизайн применяют с целью упрощения конструкции вычислительного устройства.

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

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

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

Всё изменила идея хранения компьютерных программ в общей памяти.

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

Принципы фон Неймана

В 1946 году трое учёных[1] — Артур Бёркс (англ. Arthur Burks), Герман Голдстайн (англ. Herman Goldstine) и Джон фон Нейман — опубликовали статью «Предварительное рассмотрение логического конструирования электронного вычислительного устройства»[2].

В статье обосновывалось использование двоичной системы для представления данных в ЭВМ (преимущественно для технической реализации, простота выполнения арифметических и логических операций — до этого машины хранили данные в десятичном виде[3]), выдвигалась идея использования общей памяти для программы и данных.

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

  1. Принцип двоичного кодирования.

Для представления данных и команд используется двоичная система счисления.

  1. Принцип однородности памяти.

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

  1. Принцип адресуемости памяти.

Структурно основная память состоит из пронумерованных ячеек; процессору в произвольный момент времени доступна любая ячейка; память внутренняя.

  1. Принцип последовательного программного управления.

Все команды располагаются в памяти и выполняются последовательно, одна после завершения другой, в последовательности, определяемой программой.

  1. Принцип жесткости архитектуры

Неизменяемость в процессе работы топологии, архитектуры, списка команд.

Компьютеры, построенные на этих принципах, относят к типу фоннеймановских.

Компьютеры, построенные на принципах фон Неймана

В середине 1940-х проект компьютера, хранящего свои программы в общей памяти был разработан в Школе электрических разработок Мура (англ. The Moore School of Electrical Engineering) в Университете штата Пенсильвания (англ. The University of Pennsylvania).

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

Архитектура фон Неймана решала проблемы, свойственные компьютеру «ЭНИАК», который создавался в то время, за счёт хранения программы компьютера в его собственной памяти. Информация о проекте стала доступна другим исследователям вскоре после того, как в 1946 году было объявлено о создании «Эниака».

По плану предполагалось осуществить проект силами Муровской школы в машине EDVAC, однако до 1951 года EDVAC не был запущен из-за технических трудностей в создании надёжной компьютерной памяти.

Другие научно-исследовательские институты, получившие копии проекта, сумели решить эти проблемы гораздо раньше группы разработчиков из Муровской школы и реализовали их в собственных компьютерных системах. Первыми пятью компьютерами, в которых были реализованы основные особенности архитектуры фон Неймана, были:

  • Манчестерский Марк I. Прототип — Манчестерская малая экспериментальная машина. Университет Манчестера (англ. The University of Manchester), Великобритания, 21 июня 1948 года;
  • EDSAC. Кембриджский университет (англ. The Cambridge University), Великобритания, 6 мая 1949 года;
  • BINAC. США, апрель или август 1949 года;
  • CSIR Mk 1. Австралия, ноябрь 1949 года;
  • SEAC. США, 9 мая 1950 года.

1 Понятие архитектуры ЭВМ. Принципы фон Неймана

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

Классические принципы построения архитектуры ЭВМ были предложены в 1946 году и известны как принципы фон Неймана».

Они таковы:

Использование двоичной системы представления данных

Авторы убедительно продемонстрировали преимущества двоичной системы для технической реализации, удобство и простоту выполнения в ней арифметических и логических операций. ЭВМ стали обрабатывать и нечисловые виды информации — текстовую, графическую, звуковую и другие, но двоичное кодирование данных по-прежнему составляет информационную основу любого современного компьютера.

Принцип хранимой программы Нейман первым догадался, что программа может также храниться в виде нулей и единиц, причем в той же самой памяти, что и обрабатываемые ею числа.

Отсутствие принципиальной разницы между программой и данными дало возможность ЭВМ самой формировать для себя программу в соответствии с результатами вычислений.

Устройство управления (УУ) и арифметико-логическое устройство (АЛУ) в современных компьютерах объединены в один блок — процессор, являющийся преобразователем информации, поступающей из памяти и внешних устройств.

Память (ЗУ) хранит информацию (данные) и программы. Запоминающее устройство у современных компьютеров «многоярусно» и включает оперативное запоминающее устройство (ОЗУ) и внешние запоминающие устройства(ВЗУ).

ОЗУ- это устройство, хранящее ту информацию, с которой компьютер работает непосредственно в данное время (исполняемая программа, часть необходимых для нее данных, некоторые управляющие программы).

ВЗУ- устройства гораздо большей емкости, чем ОЗУ, но существенно более медленны.

Принцип последовательного выполнения операций

Структурно основная память состоит из пронумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка. Отсюда следует возможность давать имена областям памяти, так, чтобы к запомненным в них значениям можно было бы впоследствии обращаться или менять их в процессе выполнения программы с использованием присвоенных имен.

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

Устройство ввода-вы́вода — компонент типовой архитектуры ЭВМ, предоставляющий компьютеру возможность взаимодействия с внешним миром и, в частности, с пользователями и другими компьютерами.

1.6. Устройства ввода-вывода информации

Человек взаимодействует с информационными системами главным образом через устройства ввода-вывода (input-output devices).

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

Устройства ввода-вывода называются также периферийными устройствами (peripheral devices).

Устройства ввода данных

Клавиатура

Клавиатура (keyboard) – традиционное устройство ввода данных в компьютер. Клавиатурами оснащены как персональные компьютеры, так и терминалы мэйнфреймов. Клавиатура современного компьютера содержит обычно 101 или 102 клавиши, разделенные на 4 блока:

Компьютерная мышь

Источник: https://mirznanii.com/a/217392/arkhitektura-fon-neymana

Архитектура неймановского компьютера

Неймановская архитектура компьютера

Исторически неймановськая архитектура компьютера является первой классической вычислительной архитектурой. Основные принципы организации неймановських компьютеров:

— использования двоичной системы исчисления для представления информации;

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

управления вычислительным процессом осуществляется централизованно путем последовательного выполнения команд. Каждая команда руководит выполнением одной операции и передает управления следующей команде;

— память компьютера имеет линейную организацию, то есть она состоит из последовательно пронумерованных ячеек;

— для управления используется язык машинных команд, которым отвечают элементарные операции, которые последовательно выполняются над элементарными операндами.

Перечисленные принципы обеспечивают построение алгоритмически универсальных компьютеров простой архитектуры (рис. 1.1) с минимальными аппаратурными затратами. Такую архитектуру имели компьютеры первых генераций.

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

Рисунок 1.1 — Архитектура неймановского компьютера

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

Следующие архитектурные решения в построении компьютеров все большее отходили от традиционных неймановських принципов.

Архитектура постнеймановских компьютеров.

В настоящее время различают архитектуру больших универсальных компьютеров-мейнфреймов (наиболее типичными представителями являются компьютеры серий ШМ 360/370 и их «потомков» ES9000) и архитектуру мини-, микро- и персональных компьютеров.

Особенностью универсальных компьютеров есть параллельная ь асинхронная работа процессора и специализированных процессоров ввода-вывода каналов ввода-вывода. Каналы ввода-вывода полностью управляют всеми периферийными устройствами.

Взаимодействие периферийны* устройств с каналами и каналов с процессором обеспечивается системой прерывания.

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

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

Шины материнской платы.

Компьютерная ши́на (англ. computer bus) в архитектуре компьютера — подсистема, служащая для передачи данных между функциональными блоками компьютера. В устройстве шины можно различить механический, электрический (физический) и логический (управляющий) уровни.

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

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

Современные компьютерные шины используют как параллельные, так и последовательные соединения и могут иметь параллельные (англ. multidrop) и цепные (англ. daisy chain) топологии. В случае USB и некоторых других шин могут также использоваться хабы (концентраторы).

Некоторые виды скоростных шин (Fibre Channel, InfiniBand, скоростной Ethernet, SDH) для передачи сигналов используют не электрические соединения, а оптические.

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

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

Шины бывают параллельными (данные переносятся по словам, распределенные между несколькими проводниками) и последовательными (данные переносятся побитово).

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

Сетевые соединения, такие, как Ethernet, обычно не рассматриваются как шины, хотя разница больше концептуальная, чем практическая. Появление технологий InfiniBand и HyperTransport ещё больше размыло границу между сетями и шинами.

Шины бывают параллельными (данные переносятся по словам, распределенные между несколькими проводниками) и последовательными (данные переносятся побитово).

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

Сетевые соединения, такие, как Ethernet, обычно не рассматриваются как шины, хотя разница больше концептуальная, чем практическая. Появление технологий InfiniBand и HyperTransport ещё больше размыло границу между сетями и шинами.

Источник: https://cyberpedia.su/4x3303.html

Классическая архитектура ЭВМ и принципы фон Неймана — Архитектура компьютера

Неймановская архитектура компьютера

Основы учения об архитектуре вычислительных машин заложил выдающийся американский математик Джон фон Нейман. Он подключился к созданию первой в мире ламповой ЭВМ ENIAC в 1944 г., когда ее конструкция была уже выбрана. В процессе работы во время многочисленных дискуссий со своими коллегами Г. Голдстайном и А.

 Берксом фон Нейман высказал идею принципиально новой ЭВМ. В 1946 г. ученые изложили свои принципы построения вычислительных машин в ставшей классической статье “Предварительное рассмотрение логической конструкции электронно-вычислительного устройства”.

С тех пор прошло полвека, но выдвинутые в ней положения сохраняют актуальность и сегодня.

В статье убедительно обосновывается использование двоичной системы для представления чисел (нелишне напомнить, что ранее все вычислительные машины хранили обрабатываемые числа в десятичном виде).

Авторы убедительно продемонстрировали преимущества двоичной системы для технической реализации, удобство и простоту выполнения в ней арифметических и логических операций.

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

Еще одной поистине революционной идеей, значение которой трудно переоценить, является предложенный Нейманом принцип “хранимой программы”. Первоначально программа задавалась путем установки перемычек на специальной коммутационной панели.

Это было весьма трудоемким занятием: например, для изменения программы машины ENIACтребовалось несколько дней (в то время как собственно расчет не мог продолжаться более нескольких минут – выходили из строя лампы). Нейман первым догадался, что программа может также храниться в виде набора нулей и единиц, причем в той же самой памяти, что и обрабатываемые ею числа.

Отсутствие принципиальной разницы между программой и данными дало возможность ЭВМ самой формировать для себя программу в соответствии с результатами вычислений.

Фон Нейман не только выдвинул основополагающие принципы логического устройства ЭВМ, но и предложил ее структуру, которая воспроизводилась в течение первых двух поколений ЭВМ. Основными блоками по Нейману являются устройство управления (УУ) и арифметико-логическое устройство (АЛУ) (обычно объединяемые в центральный процессор), память, внешняя память, устройства ввода и вывода.

Схема устройства такой ЭВМ представлена на рис. 1. Следует отметить, что внешняя память отличается от устройств ввода и вывода тем, что данные в нее заносятся в виде, удобном компьютеру, но недоступном для непосредственного восприятия человеком. Так, накопитель на магнитных дисках относится к внешней памяти, а клавиатура – устройство ввода, дисплей и печать – устройства вывода.

Рис. 1. Архитектура ЭВМ, построенной на принципах фон Неймана. Сплошные линии со стрелками указывают направление потоков информации, пунктирные – управляющих сигналов от процессора к остальными узлам ЭВМ

Устройство управления и арифметико-логическое устройство в современных компьютерах объединены в один блок –процессор, являющийся преобразователем информации, поступающей из памяти и внешних устройств (сюда относятся выборка команд из памяти, кодирование и декодирование, выполнение различных, в том числе и арифметических, операций, согласование работы узлов компьютера). Более детально функции процессора будут обсуждаться ниже.

Память (ЗУ) хранит информацию (данные) и программы.

Запоминающее устройство у современных компьютеров “многоярусно” и включает оперативное запоминающее устройство (ОЗУ), хранящее ту информацию, с которой компьютер работает непосредственно в данное время (исполняемая программа, часть необходимых для нее данных, некоторые управляющие программы), и внешние запоминающие устройства (ВЗУ) гораздо большей емкости, чем ОЗУ.

но с существенно более медленным доступом (и значительно меньшей стоимостью в расчете на 1 байт хранимой информации). На ОЗУ и ВЗУ классификация устройств памяти не заканчивается – определенные функции выполняют и СОЗУ (сверхоперативное запоминающее устройство), и ПЗУ (постоянное запоминающее устройство), и другие подвиды компьютерной памяти.

В построенной по описанной схеме ЭВМ происходит последовательное считывание команд из памяти и их выполнение. Номер (адрес) очередной ячейки памяти. из которой будет извлечена следующая команда программы, указывается специальным устройством – счетчиком команд в УУ. Его наличие также является одним из характерных признаков рассматриваемой архитектуры.

Разработанные фон Нейманом основы архитектуры вычислительных устройств оказались настолько фундаментальными, что получили в литературе название “фон-неймановской архитектуры”. Подавляющее большинство вычислительных машин на сегодняшний день – фон-неймановские машины.

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

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

Источник: https://www.sites.google.com/site/arhitekturacomputer/-klassiceskaa-arhitektura-evm-i-principy-fon-nejmana

Неймановская архитектура компьютера

Неймановская архитектура компьютера

Определение 1

Неймановская архитектура компьютера — это методика общего сохранения кодов команд и информационных данных в памяти электронной вычислительной машины.

Базовые понятия об архитектуре электронных вычислительных машин были сформулированы фон Нейманом в 1944 году, когда он был привлечён к разработке проекта первого компьютера на ламповой основе ЭНИАК.

При работе над этой машиной в Пенсильванском Университете фон Нейман участвовал в многочисленных дискуссиях со своими коллегами, в итоге которых появилась мысль о создании ЭВМ с более высокими характеристиками, названной EDVAC.

Далее работы по проектированию двух этих машин специалисты продолжали в параллельном режиме. В начале 1945 года основные моменты логического построения архитектуры ЭВМ были представлены в отчёте военному руководству спец. Лаборатории армии США, которая спонсировала эти работы.

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

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

Ничего непонятно?

Попробуй обратиться за помощью к преподавателям

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

В середине 1946 года фон Нейман, совместно с Голдстайном и Бёрксом, написал статью «Предварительное изучение логических построений электронного вычислительного устройства», где были подробно описаны основы конструктивного исполнения ЭВМ.

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

Авторами статьи были наглядно представлены все достоинства двоичных кодов применительно к ЭВМ, показано насколько просто и удобно выполнять в них арифметические и логические действия. Впоследствии, в вычислительных системах начали использовать обработку всех информационных данных (не только чисел), но основным способом кодирования всё равно остались бинарные коды.

Хотя следует отметить, что были машины, которые работали в троичной системе кодирования.

Замечание 1

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

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

Эта процедура была достаточно трудоёмкой и отнимала большое количество времени.

К примеру, чтобы поменять программу вычислительной машины ЭНИАК, необходимо было более одного дня, но при этом само выполнение программы продолжалось, как правило, несколько минут и затем останавливалось по причине неисправности одной из ламп, которых было несметное число.

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

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

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

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

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

Ситуацию поменял принцип сохранения управляющих программ в совместной памяти.

Когда он появился, применение архитектурных построений, которые основывались на комплектах выполняемых инструкций и описании процесса вычислений как выполнение этих инструкций, представленных в программе, очень существенно повысило вариативность ЭВМ в смысле переработки информации. Одинаковые методы в обработке данных и инструкций упростили задачи корректировки самих программ.

Принципы Неймана

Фон Нейман сформулировал следующие принципы:

  1. Однородность памяти. Информационные коды и коды команд не отличаются ничем при записи в одни области памяти. Отличить из возможно лишь по методике применения, что означает возможность использования записанных в ячейке памяти кодов, как в качестве данных, так и в качестве адреса или команды. Всё определяется способом обращения к этому коду. Такой подход даёт возможность выполнять над кодами команд такие же операции, как и над числовыми данными, что даёт много новых возможных действий. Например, если менять в цикле адресную часть команд, то это позволит обращаться последовательно к ряду данных в массиве.
  2. Адресный принцип. Структура памяти — это пронумерованные ячейки и процессору в любой момент времени доступны все.
  3. Программное управление. Любые вычислительные процессы должны иметь вид программы, которая состоит из ряда команд.

Источник: https://spravochnick.ru/informacionnye_tehnologii/arhitektura_kompyutera_struktura/neymanovskaya_arhitektura_kompyutera/

Booksm
Добавить комментарий