Структура и основные компоненты вычислительной системы

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

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

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

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

 

Структура организации вычислительной системы (ВС):

  • Прикладные программы
  • Системы программирования
  • Управление логическими устройствами
  • Управление физическими устройствами
  • Аппаратные средства

Аппаратные средства

Ресурсы ВС разделяются на два типа:

· не участвующие в управлении программой (объем винчестера и т.д.).

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

Ресурсы второго типа называются физическими ресурсами аппаратуры.

Управление физическими устройствами.

Управление физическими устройствами осуществляют программы, ориентированные на аппаратуру, взаимодействующие с аппаратными структурами, знающие "язык" аппаратуры.

Управление логическими устройствами.

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

Системы программирования

Система программирования - это комплекс программ для поддержки всего технологического цикла разработки программного обеспечения.

Прикладное программное обеспечение.

Прикладное программное обеспечение необходимо для решения задач из конкретных областей.

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

 

Структура ЭВМ:

Основной функцией центрального процессора (ЦП) является обработка информации и взаимодействие с устройствами. Обмениваться данными ЦП может только с ОЗУ (Оперативно Запоминающее Устройство).

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

ЦП выбирает из ОЗУ последовательность команд для выполнения. ЦП состоит из двух компонентов:

Устройство Управления (УУ) принимает очередное слово из ОЗУ и разбирается - команда это или данные. Если это команда - то УУ выполняет ее, иначе передает АУ.

Арифметическое Устройство (АУ) занимается исключительно вычислениями.

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

Лекция №2

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

Прикладные программыСистемы программированияУправление логическими устройствамиУправление физическими устройствамиАппаратные средства

Мы определили, что нижний уровень - это чисто аппаратура, это то, что делается из металла, пластика и прочих материалов, используемых для производства железа, или hardware компьютера.

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

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

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

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

В принципе внешнее устройство можно реализовать на оперативной памяти. Если вы знаете, есть такая замечательная программа, которая называется MS-DOS. Эта операционная система (хотя она классически не является операционной системой) имеет ограничения на размер используемой памяти 640Кб. А аппаратура реальных машин на сегодняшний день может иметь физическую оперативную память существенно больших размеров. В этой системе можно создавать логический диск, который размещается на оперативной памяти. Т.е. по всем интерфейсам работа с ним будет осуществляться как с жестким диском, но размещаться он будет на оперативной памяти. И здесь разница в том, что из тех 640Кб процессор берет команды на исполнение, а из оставшихся, которые мы объявили логическим диском, не берет, потому что он будет работать с ним как с обычным жестким диском или любым другим носителем.

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

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

Специальные регистры. К этой группе относятся две подгруппы регистров.

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

2. Вторая подгруппа регистров - это регистры управления компонентами вычислительной системы, или управляющие регистры. Практически в любой вычислительной системе имеются регистры, предназначенные для организации взаимосвязи процессора с внешним миром. Эти регистры связываются с УУВУ и через эти регистры процессор может организовывать управление внешними устройствами. Например, если возьмем регистр управления жесткого диска, то у него могут быть следующие поля:

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

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

Система прерываний. К средствам, управляющим взаимосвязью с внешними устройствами, можно отнести систему прерываний. В каждой вычислительной машине имеется предопределенный, заданный при разработке и производстве, набор некоторых событий и аппаратных реакций на возникновение каждого из этих событий. Эти события называются прерываниями. Аппарат прерываний используется для управления внешними устройствами и для получения возможности асинхронной работы с внешними устройствами. Синхронная работа, это когда система говорит: “Дай мне блок информации”, и затем стоит и ждет этого блока. Асинхронная - это когда система говорит: “Принеси мне, пожалуйста, блок информации”, и продолжает свою работу, а когда приходит блок, она прерывается (по прерыванию завершения обмена) и принимает информацию. Такова схема прерываний. Одним из прерываний, которые есть в системе, является прерывание по завершению обмена.

В момент возникновения прерывания, действия в аппаратуре ВС следующие:

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

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

Запускается программа обработки прерываний операционной системы.

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

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

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

Регистры буферной памяти (Cache, КЭШ). Следующая группа регистров - регистры, относящиеся к т.н. буферной памяти. Мы возвращаемся к проблеме взаимодействия процессора и оперативной памяти и сглаживанию скоростей доступа в оперативную память.

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

Алгоритм чтения из оперативной памяти следующий:

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

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

Регистровый буфер

Исполнительный

адресСодержимоеПризнак

“старения”.........

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

 

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

Этот буфер чтения/записи служит достаточно мощным средством для минимизации обращений к ОЗУ. Наибольший эффект достигается при небольших циклах, когда все операнды размещаются в буфере, и после этого циклический процесс работает без обращений к ОЗУ. Иногда, эти буфера называют КЭШ-буферами, а также ассоциативной памятью, потому что доступ к этой памяти осуществляется не по адресу (как в ОЗУ), а по значению поля. Реально, все механизмы могут быть устроены иначе, чем мы здесь изучаем, т.к. мы изучаем некоторую обобщенную систему.

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

Оперативная память

1-й блок2-й блок. . .k-й блок01. . .k-1kk+1. . .2k-1. . .. . .. . .. . .Использование расслоения памяти. Физически ОЗУ представимо в виде объединения k устройств, способных хранить одинаковое количество информации и, при этом, способные взаимодействовать с процессором независимо друг от друга. При этом адресное пространство ВС организовано таким образом, что подряд идущие адреса, или ячейки памяти, находятся в соседних устройствах (блоках) оперативной памяти.

Программа состоит (в большей степени) из линейных участков. Если использовать этот параллелизм, то можно организовать в процессоре еще один буфер, который организован также, но в котором размещаются машинные команды. За счет того, что есть параллельно работающие устройства, то этот буфер автоматически заполняется вперед. Т.е. за одно обращение можно прочесть k машинных слов и разместить их в этом буфере. Далее, действия с буфером команд похожи на действия с буфером чтения/записи. Когда нужна очередная команда (ее адрес находится в счетчике команд) происходит ее поиск (по адресу) в буфере, и если такая команда есть, то она считывается. Если такой команды нет, то опять-таки работает внутренний алгоритм выталкивания строки, и новая строка считывается из памяти и копируется в буфер команд. Расслоение памяти в идеале увеличивает скорость доступа в k раз, плюс буфер команд позволяет сократить обращения к ОЗУ.

http://referat.day.az/

Категории: 

Метки: