Структура и формат команд. Кодирование команд.

 

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

1) передача информации в пространстве;

2) хранение информации;

3) логические операции;

4) арифметические операции.

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

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

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

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

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

1) команды арифметических операций для чисел с фиксированной и плавающей запятой;

2) команды десятичной арифметики;

3) команды логических операций;

4) команды передачи кодов;

5) команды ввода-вывода;

6) команды передачи управления;

7) команды задания режима работы машины.

В команде, как правило, содержатся не сами операнды, а информация об адресах ячеек памяти или регистрах, в которых они находятся.

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

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

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

 

 

Организации памяти и адресации.

МП I8008 имеет мегабайтовую память. Для того чтобы адресовать к такому количеству ячеек, необходим 20-разрядный указатель. Поскольку указатель команд IP, также как и все остальные регистры – указатели BX, SI, DI, BP и SP имеет 16 разрядов, МП не имеет прямого доступа сразу ко всей памяти. Эта задача решается с помощью сегментирования.

 

Организация сегмента.

Каждый сегмент памяти содержит до 64 кб(65536 байт). Начальный адрес сегмента может быть установлен прикладной программой и всегда должен начинаться с 16-байтовых границ. Базовый адрес сегмента получается делением действительного физического адреса начальной ячейки сегмента на 16. Эти базовые адреса содержаться в сегментных регистрах, так что МП одновременно может до четырёх однозначно определяемых сегментов. На расположение сегмента не накладывается никаких специальных ограничений, кроме одного: он должен быть на границы 16 байт (т. е. физический адрес начальной ячейки должен делиться на 16). Сегменты могут быть смежными, разделёнными, перекрываться частично или полностью. После того как сегмент определён, регистры- указатели могут быть использованы для адресного обращения к любому байту или слову в пределах этого сегмента. При такой организации адресации МП имеет прямой доступ только к 64 кб памяти, а к миллиону байтов может адресоваться лишь при помощи регистров-сегментов.

Так как МП I8088 имеет четыре регистра сегментов, в его памяти одновременно выделяются четыре адресуемых сегмента: командный сегмент, сегмент данных, дополнительный сегмент и стековый сегмент.

 

 

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

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

Дополнительный сегмент обеспечивает дополнительные 64 Кб памяти.

Стековый сегмент содержит стековую структуру емкостью до 64 Кб.

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

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

 

Организация памяти.

Мегабайтовую память МП I8088 можно рассматривать как последовательность байтов, начинающуюся с физического адреса 00000Н, заканчивающуюся адресом FFFFFH.

Команды и программные данные могут быть записаны побайтно или словами в любой из этих адресов. Для запоминания 16 – битового слова или 32 – битового двойного слова используется следующее соглашение:

1. 16 – битовое слово всегда заносится в память так, что старший байт находится в ячейке с большим номером. Например, если шестнадцатеричное число 0235Н записано в ячейку 2800Н, то при этом сама ячейка 2800Н содержит число 35Н, а число 02Н записывается в ячейку 2801Н.

 

2. 32 – битовое двойное слово может быть использовано в качестве указателя для адресации байта или слова в любом сегменте памяти ЭВМ. Младшее слово адреса указывает перемещаемый адрес, а старшее слово – начальную ячейку (базовый адрес) сегмента. Два байта каждого слова заносятся в память согласно условию записи 16 - битового слова. Так как физический адрес определяется 20 – битовым кодом, то УС генерирует действительный адрес, соответствующий адресу в сегменте, сдвигал базовый адрес (старшее слово) влево на 4 разряда и прибавляя к нему 16 – битовый перемещаемый адрес (младшее слово). 32- битовый указатель заполнен 16 – ричным числом 04854000Н, которое задет физический адрес 08В50Н (сегмент 04В5Н, сдвинутый на 4 разряда влево), что дает 4В50Н, плюс перемещаемый адрес (4000Н).

 

Режимы адресации.

 

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

 

Регистровые операнды.

Команды, содержащие только регистровые операнды, являются наиболее компактными и выполняются быстрее всех остальных типов команд. Это происходит вследствие того, что все операции с регистровыми операндами реализуются в ИУ ЦП без обращения к памяти ЭВМ. Регистры общего назначения могут быть источниками операндов, их приемниками или теми и другими одновременно. Сегментные регистры могут использоваться только либо как источники, либо как приемники операндов. Например, машинная команда 20D0 (AND AL, DL) выполняет операцию логического умножения AND содержимого регистров AL и DL и помещает результаты в регистр AL. Регистр DL является источником операнда, а регистр AL – приемником. Эта команда содержит только два байта и выполняется ЦП за 3 такта.

 

 

Непосредственные операнды.

Непосредственные операнды – это постоянные данные, определяемые как часть машинной команды. Данные могут быть 8 – или 16 – битовыми. Непосредственные операнды могут быть выбраны достаточно быстро, так как ЦП может получить их прямо из очереди команд без обращения к памяти ЭВМ. Непосредственные операнды могут быть заданы только как так называемые операнды – источники. Машинная команда более компактна, если приемник операнда – аккумулятор (регистр AL или AX).

Например, машинная команда 3С02 (СНР AL, 02) сравнивает содержимое регистра AL с шестнадцатеричным числом 02 и устанавливает определенные флаги в соответствии с результатом сравнения. Непосредственным операндом в этой команде является шестнадцатеричная константа 02. Эта команда занимает только два байта в памяти и может быть полностью выполнена ЦП за 4 такта.

 

Исполнительный адрес EA.

 

Перемещаемый адрес внутри сегмента, который ЦП вычисляет для операнда в памяти, называется исполнительным адресом ЕА операнда. Так как сегмент памяти содержит до65536 однобайтовых ячеек, перемещаемый адрес может быть представлен 16-ти разрядным двоичным числом без знака, что обеспечивает возможность доступа к каждому байту сегмента. В тех случаях, когда для определения операнда в памяти в коде машинной команды требуются два байта, группа битов второго байта команды сообщает ЦП, как вычисляется 16-ти битовый адрес необходимых операндов.

 

 

    байт слово            
Reg= AL AX Rm= BX + SI BX + SI + смещение AL AX
  CL CX   BX +DI BX + DI + смещение СL CX
  DL DX   BP+ SI BP + SI + смещение DL DX
  BL BX   BP + 05 BP +DI + смещение BL BX
  AH SP   SI SI + смещение AH SP
  CH BP   DI D + смещение СH BP
  DH SS   Direct BP + смещение DH SI
  BH DS   BX BX+ смещение BH DI

 

Поле Mod используется для того, чтобы различить, соответствуют ли операнды команд регистрам ЦП или ячейкам памяти. Величина XX имеет четыре возможных двоичных значения:00, 01, 10, 11. Значение11 в поле Mod указывает на то, что операндами машинных команд являются регистровые операнды. Двоичные значения 00, 01, и 10 задают типы адресам соответственно с нулевым, одно- или двухбайтовым смещением. Смещение может быть 8-ми битовым числом со знаком или 16-ти битовым без знака, которое включается в машинную команду, как ее часть и используется при вычислении исполнительного адреса.

Обозначение YYY соответствует трем битам, образующим поле Reg и используемым для указания регистра, содержащего операнд. Поле Reg идентифицирует 8-ми битовый регистр при байтовых операциях и 16-ти битовый регистр при работе со словами. В некоторых командах эти биты используются также для идентификации группы, к которой относится машинная команда (например команда AND в группе логических команд).

Три бита ZZZ формируют поле Rm. Вместе с полем Mod оно используется для идентификации определенного типа адресации. В команде допустима любая комбинация в полях Mod и Rm, что обеспечивает многообразие регистров адресации в МП.

 

 

Прямая адресация.

Простейшим типом адресации является простая; Она не использует не каких регистров. Исполнительный адрес ЕА берется непосредственно из 16-ти битового поля смещения машинной команды. Этот прямой адрес однозначно определяет байт или слова памяти, расположенные внутри сегмента.

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

 

 

 

Пусть, например, в программе, написанной на языке ассемблера, регистр сегмента данных DS содержит 04В5H, а байт 1400H текущего сегмента данных – символическое имя LOCI. Машинная команда C606001402 (MOV LOC1.02) предписывает заполнить по перемещаемому адресу 1400H сегмента данных шестнадцатеричное число 02. После смешения команды содержит число 1400H и интерпретируется как исполнительный адрес ЕА. Действительный физический 20-ти битовый адрес, определяемый YC, в этом случае соответствует 05F50H (4B50H+1400H).

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

При относительной адресации поле смещения представляется 8-ми битовым числом со знаком. Исполнительный адрес ЕА при этом определяется в результате сложения содержимого поля смещения и регистра указателя команду IP (рис. 9, В).

Относительную адресацию используют для команд условных переходов, таких, как JE (переход по равенству), JO (переход по переполнению). При использовании относительной адресации байт адресации (Mod /Reg/ Rm) не требуется.

При абсолютной адресации часть команд представляет собой 32- битовый указатель, определяющий физический адрес в памяти МП. Младшее слово указателя рассматривается при этом как перемещаемый адрес сегмента, базовым адресом которого является старшее слово указателя (рис 9, с). При абсолютной адресации байт адресации (Mod/Reg/ Rm) также не требуется.

Косвенная адресация

При такой адресации в качестве исполнительного адреса EA выступает содержимое базового или индексных регистров (BX,SI или DI).

 

 

 


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

При косвенной адресации существует одно исключение: для команды JMP (переход) и CALL ( вызов процедур) В качестве исполнителя может выступать содержимое любого из 16-битовых регистров общего назначения (AX, BX, CX, DX, SJ, DJ, BP, SP)/

Пусть, например, в программе на языке ассемблера регистр DS содержит число 14С5H. Если содержимым регистра SJ является число 28FFH, команда CG0410 (MOV [SI], 10H) заполняем шестнадцатеричное число10 в байте 28FFH сегмента данных. В этом случае содержимое регистра SJ служит исполнительным адресом. Действительный физический 20-битовый адрес памяти, соответствующий перемещаемому адресу 28FFH , при этом равен 1754FH (14C50H+28FFH).

 

 

Косвенная адресация со смещением.

При такой адресации используемый адрес ЕА определяется как сумма величины смещения и содержимого одного из регистров - базового или индексного(BX, BP, SJ, DJ) (рис.11).

 

 

 


Величина смещения может быть 8-битовым числом без знака. При использовании регистров BX, SJ или DJ за исполнительный адрес принимается перемещаемый адрес текущего сегмента данных, базовый адрес которого определяется регистром сегмента данных DS. При использовании регистра BP за исполнительный адрес принимается перемещаемый адрес текущего стекового сегмента, базовый адрес которого содержится в регистре сегмента стека SS. Поскольку в прикладных программах могут быть использованы префиксные команды, существует возможность переприсвоения исполнительных адресов относительно других сегментов памяти.

При использовании адресации денного типа поле Mod содержит двоичное число 01 и 10 в зависимости от того, является ли смещение 8-ми 16-битовым числом. Поле Rm представляется двоичным числом 100, 101, 110 или 111 в зависимости от того, какой используется регистр SJ, DJ, BP или BX соответственно.

Рассмотрим пример, в котором регистр сегмента содержит код 04В5Н. Если регистр ВР содержит число FF10Н, машинная команда С6870245 (MOV [BP+02],45H) запоминает шестнадцатеричное число 45 в байте FF12Н стекового сегмента. Величиной смещения является 8-битовое число со значением (02), занимающее в команде третий байт. Исполнительный адрес ЕА вычисляется в результате сложения величины смещения с содержимым регистра ВР (FF10Н+02Н). Это соответствует физическому адресу 14А62Н (4В50Н+FF12Н) памяти, который определяется УС. Поскольку при использовании регистра ВР описанная адресация обеспечивает доступ к стековому сегменту, это очень удобно для работы с конструкциями данных, использующих стек.

 

 

Базово-индексная адресация.

При такой адресации исполнительный адрес определяется в результате сложения содержимого базового регистра (ВХ или ВР) и индексного регистра (SJили DJ).

 

 

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

При базово-индексной адресации поле Mod представлено числом 00. Поле Rm- двоичным числом 000, 001, 010 или 011 соответственно используемой адресации [BX+SJ], [BX+DJ], [BP+SJ] или [BP+DJ].

Пусть регистр сегмента данных содержит код 04В5Н. Если регистры ВХ и SJ содержат коды 1000Н и 1500Н соответственно, то машинная команда С60015 (MOV[BX+SJ],15Н) запомнит шестнадцатеричное число 15 в байте памяти, имеющим адрес 2500Н в сегменте данных. Исполнительный адрес вычисляется суммированием содержимого регистров BX и SJ (1000Н+1500Н). Этот адрес соответствует действительному физическому адресу памяти 07050Н(4В50Н+2500Н), устанавливаемому УС с шиной.

 

 

Базово-индексная адресация со смещением.

При такой адресации исполнительный адрес определяется сложением содержимого базового регистра (ВХ или ВР), индексного регистра (SJили DJ) и величины смещения.

 


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

При базово-индексной адресации со смещением поле Mob представляет собой двоичное число 01 или 10 в зависимости от того, определяется ли смещение 8-ми или 16-битовыми числами. Поле Rm представляется точно так же, как и в случае базово-индексной адресации.

Рассмотрим пример, в котором регистр сегмента стека содержит число 04С5Н. Если регистр ВР или SJ содержит соответственно FF00Н и 0010Н, по машинной команде С642200АВ (Mov[BP+SJ+20Н], 0BH) шестнадцатеричное число 0В будет записано в ячейку FF30Н стекового сегмента. Смещением в этом случае является 8-битовое число со знаком (шестнадцатеричное число 20Н). Исполнительный адрес равен сумме величины смещения и содержимого регистров ВР и SJ(FF00H+0010H+20H) и соответствует действительному физическому адресу памяти 14В80Н(4С50Н+FF00Н+001Н+20Н), определяемому УС с шиной.

 

 

Адресации строк данных.

Строковые команды такие, как MOVS (переслать строку), CMPS (сравнить строку), LOPS(загрузить строку), CTOS (записать строку) и SCAS(скопировать строку), не используют ни один из рассмотренных выше типов адресации для выборки своих операндов. Содержимое индексных регистров (SJ и/или DJ) используется для непосредственного указания требуемого участка памяти. Регистр SJ всегда используется как указатель первого байта или слова строки-источника.

 

 

 


Регистр DJ используется как указатель первого байта или слова строки-приемника. Команда LODS предлагает использование регистра SJ в качестве указателя источника. Команды STOS и SCAS используют регистр DJ в качестве указателя приемника. Команды MOVS и СMPS используют оба регистра SJ и DJ. Перемещаемый адрес, находящийся в регистре DJ, всегда относится к текущему дополнительному сегменту. Для команд со строковыми данными могут быть определены и префиксные команды, которые позволяют переприсвоить сегмент данных (для команд LODS, MOVS и CMPS) или дополнительный сегмент (для команды SCAS) другому сегменту, расположенному в любой части памяти. При использовании строковой команды увеличение или уменьшение содержимого регистров SJ или DJ определяется состоянием (нулевое или единичное) флага направления. В зависимости от того, с чем работает команда с байтами или со словами, содержимое индексных регистров увеличивается/уменьшается соответственно на 1 или 2.

Адресация порта ввода-вывода.

 

Этот тип адресации обеспечивает доступ к устройствам ввода-вывода (в/в), присоединённым в/в области памяти МП. Область в/в МП I 8088 в дополнение к мегабайтовой памяти содержит ещё 64 КБ.

Эта область в/в не является сегментируемой и может выполняться как отдельно, так и вместе со всей памятью МП. В последнем случае уменьшается мегабайтовая память на 64 КБ, но обеспечивается дополнительная гибкость при программировании, так как все рассмотренные ранее типы адресации могут обеспечить доступ к этой области.

Каждый байт области в/в может быть назначен в качестве адреса однозначно определяемого порта в/в. Данные могут передаваться между накопителем и любым портом в/в, адресуемом внутри 64-килобайтовой области в/в. Регистр AL используется для передачи байта, а регистр АХ – для передачи слова. Для адресации порта в/в существуют команды IN (ввести из порта) и OUT (вывести в порт). Если номер порта находится в пределах 0-255 (десятичных чисел), он может быть определён частью машинной команды; если же номер порта превышает 255, то для его хранения используют регистр DX.

 

Работа со стековой памятью.

Стек – это область памяти, специально выделенная для временного хранения параметров или программных данных, необходимых для информационной связи программ и процедур. Максимальная ёмкость стековой памяти составляет 32К (32768) 16-битовых слов. Т. о. стек может полностью размещаться в одном сегменте памяти.

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

В большинстве случаев программист не должен следить за адресами действительного расположения программных данных в стеке. Такие команды, как PUSH (записать данные в стек), РОР (считать данные из стека), CALL (вызов процедуры), RET (возврат из процедуры) или IRET (выход из прерывания), автоматически изменяют содержимое указателя стека SP так, чтобы отслеживать адрес вершины стека.

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

Команды PUSH (записать данные в стек) и РОР (считать данные из стека) позволяют организовать обмен данными между стеками и любым из 16-битовых регистров общего назначения или ячейками памяти.

 

 

Процедуры вызова и возврата, использующие стек.

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

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

Последней командой выполняемой перед выходом из процедуры, должна быть команда RET (шестнадцатеричный машинный код – С3), по которой содержимое вершины стека (являющееся адресом возврата) считывается в указатель команд IP. Это обеспечивает передачу управления команде, следующей за командой CALL. В языке ассемблера процедура, выполненная внутрисегментным вызовом, определяется как NEAR.

 

 

Межсегментные вызовы и возвраты.

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

- Указатель стека уменьшается на 2. Содержимое регистра CS, базовый адрес текущего командного сегмента, переносится в ячейку – вершину стека;

- Указатель стека вновь увеличивается на 2. В стек загружается перемещаемый адрес команды, следующей за командой CALL.

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

- Слово из вершины стека (определяемой указателем стека SP) считывается в указатель команд IP. Для определения новой вершины стека содержимое регистра SP увеличивается на 2;

- Слово, занимающее новую вершину стека, переписывается обратно регистр CS. Содержимое регистра SP вновь возрастает на 2.

- Таким образом, управление передаётся команде, следующей за командой CALL.

 

 

Вложенные процедуры вызова и возврата.

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

 

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

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


 

 

Прерывание работы микропроцессора.

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

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

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

Если обрабатывается не маскируемое прерывание, то ЦП должен немедленно приостановить выполнение текущей программы и отреагировать на поступивший сигнал прерывания, не считаясь с положением флага разрешения прерывания. Немаскируемые прерывания имеют в ЭВМ наивысший приоритет и должны обслуживаться МП немедленно. При использовании ЭВМ в монопольном режиме немаскируемыми прерываниями являются фактически "катастрофы", такие, как ошибка памяти или сбой питания. При коллективном или мультипрограммном режиме пользования МК-ми немаскируемыми прерываниями могут быть сигналы системного времени на прекращение работы (например, для выполнения другой программы) или сигнал прекращения выполнения программы, которая нарушила границы, отведённой ей памяти (программные ошибки, приводящие к её неправильному выполнению).

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

Каждому прерыванию соответствует код, по которому его различает МП. В системе может быть до 256 типов прерываний. Прерывания могут генерироваться требованиями устройств ввода-вывода, внешними по отношению к ЦП. Такого типа прерывания могут быть как немаскируемые, так и маскируемые. Прерывания могут быть внутренними, возникающими в прикладных программах при определённых условиях, таких как выполнение команды INTO (прерывание по переполнению), когда флаг переполнения OF равен 1.

ЦП автоматически присваивает текущую работу в следующих случаях:

  1. при делении на 0 (прерывание из-за ошибки деления, тип 0);
  2. при восполнении команды, когда флаг ловушки TF находится в состоянии 1 (пошаговый останов, прерывания 1);
  3. при выполнении команды СС (16 –й код )(прерывании в заданной точке программы).

 

Внешние прерывания

В систему, основанную на МП I8088, может входить много соединённых с ним BY: принтер, терминал, ЗУ на гибких дисках, клавиатура и др. Ряд из них требует «внимания» со стороны МП лишь на непродолжительный срок; остальное время они могут функционировать без помощи ЦП.

Рассмотрим клавиатуру. Хорошая машинистка вводит до 400 символов в минуту. Это означает, что новый символ может поступать от клавиатуры в ЭВМ каждые 150 мс, а МП должен каждые 150 мс считывать и запоминать символ, введённый с клавиатуры.

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

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

У МП есть три линии прерываний, RESET, NMI и INTR, по которым ВУ могут передавать свои запросы на обслуживание со стороны ЦП.

 

Запуск ЦП

 

При появлении запроса в линии RESET ЦП выполняем следующие действия:

- устанавливаем флаг IF в нулевое состояние. Это приводит к невозможности выполнения маскируемых и пошаговых прерываний;

- обнуляет регистры сегментов DS, ES, SS;

- обнуляет указатель команд IP;

- засылает шестнадцатеричное число FFFF в регистр сегмента команд.

ЦП начинает работу с обращения к ячейке памяти с адресом FFFFО. Эта ячейка содержит команду IMP, которая передает управление процедуре инициализации, запускающей МК.

Векторы прерываний служат для идентификации процедур, необходимых для обслуживания требования прерывания. Каждому внешнему требованию на прерывании может быть поставлен в соответствие код прерывания в переделах 0 – 255.

 

В ПК семейства I 8088 существует 256 векторов прерываний – по одному вектору на каждый тип прерывания.

Таблица векторов прерываний ПК фирмы IBM.

 

 

Таблица векторов прерываний занимает 1024 младших байта памяти – ячейки с физическими адресами от 0 до 03FFH – и имеют 256 входов в соответствии с количеством векторов.

Каждый вход таблицы является указателем двойного слова, содержащего начальный адрес процедуры, которая обеспечивает обслуживание требования на прерывание данного типа. Старшее 16-битовое слово каждого входа содержит базовый адрес сегмента, в котором находится процедура. Младшее 16-битовое слово каждого входа содержит перемещаемый адрес процедуры обслуживания внутри сегмента. Так как каждый вход таблицы занимает 4 байта, первая ячейка входа для прерывания данного типа может быть определена простым умножением кода типа прерывания на четыре.

Маскируемые прерывания. Это внешние требования, поступающие в МП по линии INTR. С помощью маскируемых прерываний можно засинхронизировать с ЦП наибольшее число BУ. При активизации линии INTER МП осуществляет различные действия, зависящие от состояния флага прерываний. Реализуемая в этот момент машинная команда всегда выполняется до конца, и только после этого начинаемая обработка запроса на прерывание.

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

1. генерируется сигнал прерывания внешнего прерывания. Этот сигнал сообщает ВУ о том, что его требование признано;

2. считывается код прерывания, поступивший на шину с ВУ;

3. содержимое регистров флагов записываемая в ячейку памяти, адрес которой хранится в текущей в текущей вершине стека, определяемой регистром SS и SP;

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

5. обнуляется флаг ловушки TF, что делает невозможным пошаговый режим;

6. В указатель команд IP засылаемая 16-битовое слово, находящееся по физическому адресу (TYPE*4) и (TYPE*4)+1, где TYPE – код типа прерывания;

7. в регистр сегмента команд CS засылается 16-битовое слово, находящееся в ячейках памяти с физическим адресом (TYPE*4)+2 и (TYPE*4)+3.

После выполнения операции 6) и 7) управление передается процедуре обслуживания прерывания, содержащей машинные команды, подходящие для удовлетворения требований маскируемого прерывания. Одной из таких команд, содержащихся в процедуре обслуживания, является команда STI (установить прерывание), которая устанавливает флаг прерываний в 1-е состояние и тем самым делает возможным выполнение новых требований, поступающих на INTER.

Немаскируемые прерывания. Это внешние прерывания, поступающие в МП по линии NMI. Обычно ими являются прерывания, сигнализирующие ЦП о внешних событиях особой важности, таких как отключение питания, сбой памяти и т.д. Немаскируемые прерывания признаются МП всегда независимо от состояния флага прерываний. Таким образом, немаскируемые прерывания имеют более высокий приоритет по сравнению с маскируемыми. Им присвоен тип 2. МП в ответ на требование немаскируемого прерывания выполняет следующую последовательность операций:

  1. содержимое регистра флагов записывается в ячейку памяти (адрес который хранится в текущей вершине стека), определяемую регистрами SS и SP;
  2. обнуляется флаг прерываний IF, что запрещает выполнение всех маскируемых прерываний;
  3. обнуляется флаг ловушки TF, что делает невозможным пошаговый режим;
  4. в стек загружается содержимое регистра сегмента команд CS;
  5. в стек загружается содержимое указателя команд IP;
  6. 16-битовое слово из ячейки с физическим адресом 00008Н записывается в регистр IP;
  7. 16-битовое слово из ячейки с физическим адресом 0000АН записывается в регистр CS.

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

Внутренние прерывания.

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

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

В ПК IBM программные прерывания используются для реализации возможностей, предоставляемых системным программным обеспечением BIOS. Так, например, команда INT 16Н может быть использована для чтения символа из буфера клавишного пульта ЭВМ.

Прерывания из-за ошибки деления.

МП автоматически генерирует прерывание типа 0 немедленно вслед за операциями DIV (деление) или IDIV (целочисленное деление) при возникновении следующих условий:

  1. деление на 0;
  2. если результат занимает больше 8 или 16 бит при делении соответственно 8- и 16-разрядных чисел.

Адрес процедуры обслуживания прерывания типа 0 должен определяться ячейками памяти с физическими адресами с 00000Н по 00003Н.

Прерывание в точке.

Прерывание в заданной точке (месте) программы используется в основном для отладки программы при её написании или тестировании. МП генерирует прерывание типа немедленно по завершении выполнения команды INT 3 (CCH). Шестнадцатеричный машинный код СС используется как команда прерывания в точке. Его можно вставить в любое место программы, где необходимо прервать его нормальное выполнение, и с помощью процедуры, обслуживающей это прерывание, отобразить критическую информацию, такую, как содержимое регистров ЦП и ячеек памяти. Поскольку минимальная смысловая часть команды на языке МП I8088 занимает один байт, машинный код ССН может заменить любую команду, обозначая тем самым точку программы, в которой необходимо осуществить прерывание.

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

В МП I8088 нет команд, которые непосредственно изменяли бы состояние флага ловушки. Но содержимое регистра флагов можно загрузить в стек, и состояние флага ловушки может быть изменено с помощью модификации образа флага, находящегося в стеке. Таким образом, для инициации пошагового режима могут быть использованы команды PUSHF(записать флаг в стек) и POPF(считать флаг из стека).

 

 

Состав персонального компьютера

 

Устройства в составе персонального компьютера IBM-PC

 

Системный блок, монитор, клавиатура и периферийные устройства

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

 

4.2 Системные блоки – корпуса персональных компьютеров

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

Корпуса с горизонтальным расположением делят на типы: нормальный (normal), малый (baby) и сверх малый (slim)

Корпуса с вертикальным расположением называют типом башня (tower) и делят на виды: 1 – малый (mini tower), 2 – средний (midi tower) и 3 – большой (big tower). Как правило, корпуса такого исполнения отличаются друг от друга видом передней панели и общей полезной высотой, в то время как, их ширина, длинна и глубина различаются незначительно. На передней панели системного блока располагаются некоторые элементы управления, а именно: тумблер-выключатель напряжения питания сети (Power), кнопка сброса – перезагрузки (Reset), индикатор обращения к жесткому диску, передние панели дисковых и ленточных устройств - накопителей информации со сменными носителями и другие комплектующие элементы и части устройств, требующие простого и частого доступа при использовании. Шина USB получила “второе рождение” с появлением Flash памяти большого объема и многих других устройств пользователя включая цифровые фотоаппараты и камеры. Для удобного и оперативного подключения их, на переднюю панель некоторые производители корпусов вынесли разъемы портов USB.

Внутри системного блока размещаются основные внутренние компоненты персонального компьютера: материнская плата – 3, платы адаптеров, интерфейсов, контроллеров устройств, карт, расширений и их разъемы – 10, дисковые накопители – 8 и 13, блок питания – 6, соединительные шлейфы, шнуры и кабели – 4, 7, вентилятор системы охлаждения внутренних элементов – 1, вентилятор и радиатор системы охлаждения центрального процессора – 2, слоты системной шины – 9, отверстие разъема клавиатуры – 11 и входной и выходной разъемы подключения питания – 12 и т.д.. Так как многие компоненты могут быть интегрированы на материнской плате, то не все они могут быть представлены как отдельные комплектующие элементы. Задняя панель, как правило, содержит панели плат расширений с разъемами, заглушки разъемов, вентиляционное отверстие вентилятора блока питания – 5 и др.

Корпус может быть выполнен из металла, пластика и комбинации того и другого. Как правило, все комплектующие элементы, расположенные внутри системного блока, крепятся изнутри к металлической раме – 3, состоящей из днища – 8, задней панели – 3 и передней панели – 7, на которую затем надевается кожух – 2. В передней панели имеется одно или несколько окон – 1, предназначенных для вывода на лицевую – переднюю часть управляющих панелей устройств, требующих постоянного доступа во время эксплуатации (магнитные, оптические, магнитооптические дисководы, ленточные накопители и др.). Задняя панель, также, имеет отверстия и окна для вывода на заднюю часть системы охлаждения блока питания – 4, разъемов интерфейсов периферийных устройств – 5, заглушек плат интерфейсных карт – 6.

 

4.3 Блок питания

 

Блок питания обеспечивает необходимыми напряжениями все системы аппаратуры персонального компьютера. Они располагаются внутри системного блока – корпуса компьютера и соединяются с материнской платой и другими устройствами при помощи шлейфов питания. Основные характеристики блоков питания компьютеров – это напряжения, их допустимые нагрузки и общая мощность. Стандартные блоки питания и аппаратура персональных компьютеров IBM имеют напряжения ± 12 и ± 5 вольт. Общая мощность, как правило, составляет до 300Ватт. При включении компьютера схемы блока питания проверяют параметры напряжений, и, если они в норме, выдают специальный сигнал наличия питания – PWRGOOD, появление которого приводит к возникновению сигнала сброс – RESET центрального процессора. Блоки питания оснащены системой защиты от перегрузок и отсутствия нагрузки, которая отключает устройство. При срабатывании систем защиты необходимо отключить компьютер, устранить причину перегрузки или недогрузки и включить его. Для охлаждения, блок питания имеет встроенный вентилятор.

Принципиальное различие между AT и ATX этими форм-факторами с точки зрения конструкции блока питания заключается в том, что БП в AT не поддерживает программно стандарт Расширенного Управления Питанием, в первую очередь управление отключением питания. Отключить его можно, лишь прекратив подачу напряжение на его вход. В БП формата ATX есть возможность программного отключения сигналом управления с материнской платы. Следует заметить, что на материнскую плату при этом подаётся определённое «дежурное» напряжение, прекратить подачу которого можно только отключив БП тумблером на нём, или вынув сетевой шнур из розетки.

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

Третье отличие состоит в том, что разъёмы большинства портов ввода-вывода материнской платы ATX (COM, LPT, USB, а при наличии интегрированной аудио карты — и разъемы для нее) впаяны в оную, на корпусе имеется специальный вырез для них. К тому же, первоначально рассчитывалось, что вентилятор в блоке питания будет охлаждать процессор, но это условие на данный момент в большинстве случаев не выполняется в «самосборных» системах и практикуется только «серьезными» брендами.

Целесообразно ли починить сгоревший БП?

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

 

4.4 Материнская плата – основа архитектурного исполнения PC

Различные материнские платы

Материнские или системные платы представляют собой сложные электронные устройства – многослойные печатные монтажные платы с расположенными на них:

1. Наборами больших однокристальных электронных микросхем – чипов (центральный процессор, другими процессорами, интегрированными контроллерами устройств и их интерфейсами)

2. Микросхемами оперативной памяти и разъемами их плат

3. Микросхемами электронной логики

4. Простыми радиоэлементами (транзисторы, конденсаторы, сопротивления и др.)

5. Разъемами системной шины (стандартов ISA, EISA, VESA, PCI и др.)

6. Слотами для подключения плат расширений (видеокарт или видеоадаптеров, звуковых карт, сетевых карт, интерфейсов периферийных устройств IDE, EIDE, SCSI, AGP…)

7. Разъемами портов ввода/вывода (COM, LPT)

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

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

Тип и характеристики различных элементов и устройств материнской платы, как правило, определяется типом и архитектурой центрального процессора (материнские платы на базе процессоров фирм Intel, AMD, Cyrix и др. – 8086/8088/80188, 286, 386, 486/586/686, Pentium, Pentium 2-4). Как правило, именно центральный процессор или процессоры, их семейство, тип, архитектура и исполнение определяют тот или иной вариант архитектурного исполнения материнской платы. По числу процессоров, составляющих центральный процессор, различают однопроцессорные и многопроцессорные (мультипроцессорные) материнские платы. Большинство персональных компьютеров являются однопроцессорными системами и комплектуются однопроцессорными материнскими платами. На вид и комплектацию материнских плат влияют, также, требуемые эксплуатационные характеристики и будущее назначение компьютера. Так, размеры материнской платы портативных компьютеров “записных книжек” будут значительно меньше стандартных, а их комплектация – шире, за счет интегрирования дополнительных элементов, например, видеокарт и интерфейсов дисковых накопителей, а материнских плат – предназначенных для комплектации серверов распределенных компьютерных сетей и баз данных – будут большого размера с минимальным числом интегрированных устройств.

Рассмотрим внешний вид и конфигурацию материнской платы на базе процессора Pentium с интегрированными периферийными устройствами:

1 – Разъем типа Intel ZIP Socket 7 для подключения центрального процессора типа Pentium, Cyrix 6x86 или AMD 5k86. 2 – Чип Intel 82430HX Pentium PCI Set. 3 – Разъем – слот системной шины стандарта PCI Local Bus. 4 – Разъем – слот системной шины стандарта ISA. 5 – Чипы кэш-памяти центрального процессора (256К Pipelined Burst Cache). 6 – Разъем – слот подключения 72-pin SIMM модулей – плат RAM памяти. 7 – Разъем интерфейса EIDE накопителей на жестких дисках (HD). 8 – Разъем интерфейса SCSI типа Adaptec AIC 7S50/7880 или Ultra Wide SCSI (AHA-2940uw). 9 – Разъем интерфейса дисководов – накопителей на гибких магнитных дисках (FD). 10 – Разъем последовательного порта типа 16550 Fast UART или совместимого. 11 – Разъем параллельного порта типа EPP/ECP . 12 – Чип интегрированного видеоконтроллера типа S3-Trio. 13 – Разъем типа SVGA для подключения монитора. 14 – Чипы видеопамяти типа EDO DRAM. 15 – Разъем подключения модуля MPEG. 16 – Чип интегрированного звукового контроллера типа Creative. 17 – Разъем подключения звуковых динамических колонок. 18 – Разъем подключения звукового синтезатора. 19 – Чип памяти ROM, содержащий базовую систему ввода/вывода (Basic Input/Output System – BIOS) . 20 – Чип контроллера портов ввода/вывода. 21 – Разъем типа PS/2 для подключения манипулятора “мышь” и клавиатуры . 22 – Разъемы типов AT и ATX для подключения питающего напряжения. 23 – Разъем портов типа Universal Serial Bus (USB) . 24 – Разъем шины LPB MPEG и TV-тюнера.

4.3.1 Системная шина

 

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

В настоящее время, чаще всего, в персональных компьютерах используются системные шины стандартов ISA, EISA, VESA, VLB и PSI. На рисунке изображены четыре разъема шины PSI и три – ISA, расположенные на универсальной материнской плате. Все стандарты различаются как по числу и использованию сигналов, так и по протоколам их обслуживания. Взаимодействие устройств при помощи системной шины контролируется аппаратурой обслуживания шин и их контроллерами. Основа конструктивного исполнения шины входит в архитектуру материнской платы, на которой располагаются ее проводники и разъемы для подключения плат адаптеров устройств (видео !VideoCards>about, аудио !SoundCards>about, интерфейсов накопителей информации, интерфейсных портов ввода/вывода, внутренних модемов и т.п.) и расширений базовой конфигурации. Различают 16-ти и 32-х разрядные, высокопроизводительные (VESA, VLB и PSI с тактовой частотой более 16 МГц) и низкопроизводительные (ISA и EISA с тактовой частотой 8 и 16 МГц) системные шины. Также, шины, разработанные по современным стандартам (VESA, VLB и PSI) допускают подключение нескольких одинаковых устройств, а шина PSI обеспечивает самоконфигурируемость периферийного оборудования – поддержку стандарта Plug and Play исключающего ручную конфигурацию аппаратных параметров периферийного оборудования при его изменении или наращивании.

Общий принцип функционирования современных шин различных стандартов состоит в организации устройствами циклов шины во время которых устройства принимают и передают информацию. Цикл шины инициируется устройством – инициатором (master drive), которое определяет статус шины и если она не занята другими устройствами, устройство занимает ее и инициализирует интерфейсный контакт с другим устройством (slave drive) или устройствами – образует циклы шины. Таким образом, исключается ситуация конфликта шины или коллизии. В настоящее время, наиболее распространены протоколы, в которых взаимодействующие устройства равны в своих привилегиях использования шины, однако, продолжают существовать протоколы, предусматривающие одно устройство – инициализатор цикла шины – ведущее, и несколько ведомых устройств. При такой организации протоколов взаимодействия, чаще всего, устройством инициализатором является центральный процессор, а ведомыми – другие системные и периферийные устройства.

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