Самодельный компьютер

Самодельный компьютер — всего за 1,5 года

Многие помнят, как в 1991 году на полках магазинов появился 16-разрядный персональный компьютер «Поиск». Этот моноблок тогда покорил многих. Конечно, в плане производительности он уступал IBM PC/XT, однако он был наш. Блоки расширения позволяли немного увеличить его функционал. Благодаря этому ПК, многие жители нашей страны стали осваивать программирование, да и вообще смогли получить доступ к высоким технологиям. Сегодня поговорим о нечто похожем, но собранном одним человеком своими собственными руками.

Энтузиаст Стив Чемберлин (Steve Chamberlin) начал проект своего персонального компьютера в ноябре 2007 года и смог обеспечить его стабильную работу уже в марте 2009 года. Таким образом, на проект Big Mess O’Wires (BMOW) ушло полтора года. Первый взгляд на компьютер не выявляет ничего удивительного, материнская плата усеянная микросхемами с подключенными портами ввода/вывода. Однако стоит только перевернуть компьютер, как открывается совсем другая картина. Технические характеристики BMOW:

  • Рабочая частота 2 МГц, хотя тестировался при частоте 3МГц;
  • Объем оперативной памяти 512 Кб;
  • Объем ПЗУ 512 Кб;
  • Потребляемая мощность 10 Вт;
  • Обеспечивается разрешение 512 х 480 или 128 х 240, в зависимости от глубины цвета;
  • Программируемый звуковой генератор;
  • Клавиатура имеет стандартный разъем подключения PS/2.

В общей сложности, Стив использовал около 1250 проводов и около 2500 контактов. Сайт проекта BMOW находится по этому адресу. Кроме того, Стив Чемберлин еще и весьма предприимчив. Посудите сами, он предлагает за $0,5 наклейку с логотипом BMOW, а за $28 футболку. Видеоролик позволяет увидеть персональный компьютер Стива в действии. Материалы по теме: — ЕС ЭВМ — советский «ответ Чемберлену»;
— Компьютерная индустрия в датах;
— Великие компьютерные леди.

Микропроцессор Z80 его структура и система команд (стр. 1 из 4)

Московский Институт Электроники и Математики

(технический университет)

Кафедра ИТАС

РЕФЕРАТ

по курсу : “ЭВМ и периферийные устройства”

на тему: Микропроцессор Z80 его структура и система команд.

Выполнил: студент группы АП-41

Завалишин Е. А.

МОСКВА 1998

Архитектура микропроцессора Z-80

Архитектура микропроцессора Z-80 фирмы ZILOG основывается на архитектурных принципах микропроцессора 8080 и позволяет выполнять все 78 команд этого микропроцессора, а также 80 дополнительных команд. Всего микропроцессор Z-80 имеет 696 кодов операций (в отличие от 244 кодов микропроцессора 8080).

К числу особенностей микропроцессора Z-80 относятся: использование для питания лишь одного источника напряжением “+5В”, наличие однофазного внешнего синхрогенератора, 17 внутренних регистров и встроенная схема регенерации ОЗУ.

НАЗНАЧЕНИЕ ВЫВОДОВ.

Микропроцессор Z-80 — это микросхема с 40 выводами, пронумерованными от 1 до 40. Рассмотрим функции выводов.

Вывод 11 напряжение питания +5в. Вывод 29- общий. Вывод 06- тактовый вход. В SPECTRUMe используется тактовая частота 3.5 Мгц. Вывод 07-10, 12-15- информационная шина. Вывод 1-5,30-40- адресная шина.

Оставшиеся 13 выводов присоединены к линиям, которые несут управляющие сигналы. Вывод 21- линия считывания RD. Эта линия становится активной, когда байт информации должен быть считан из памяти или порта. Вывод 22- линия записи WR. Эта линия активна, когда байт информации должен быть записан в память или в порт. Вывод 19- запрос памяти MREQ. Эта линия активна в тех случаях, когда требуется обращение к памяти.

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

Вывод 28- линия регенерации RFSH. Она используется для регенерации динамической памяти. Частично используется для формирования TV сканирующих сигналов. Вывод 27- активизируется при выполнении машинного цикла М1 и показывает, что проходящий машинный цикл обработки команды находится в состоянии “ввода кода операции” при выполнении некоторой команды. Сигнал М1 при выполнении двухбайтовой команды формируется при вызове каждого байта кода операции. Сигнал M1 появляется вместе с сигналом IORQ в цикле приема прерывания. Выборка инструкции требует, чтобы все три сигнала MI, MREQ и RD были активизированы. В то же время выборка байта данных из ячейки памяти требует, чтобы только MREQ и RD были активизированы. Время необходимое для выборки инструкции — 1.14мкс, что составляет 4 такта. Вывод 20- линия выход lORQ. Эта линия активна при выполнении команд IN или OUT. Вывод 18- останов HALT. Линия активизируется при выполнении команды HALT. Вывод 25- линия запроса BUSRQ. Z-80 позволяет внешним устройствам использовать адресную и информационную шину в режиме пропуска цикла. Запрос микропроцессору пропустить следующий цикл выполняется внешними устройствами путем активизации этой линии. Вывод 23- линия подтверждения, BUSAK. Микропроцессор подтверждает запрос остановки после выполнения команды и активизирует эту линию.

Оставшиеся 4 вывода находятся под контролем пользователя. Вывод 26- линия сброса, RESET. Используется для инициализации микропроцессора. Она активизируется при включении питания. Сброс может быть осуществлен в SPECTRUMe соединением линий RESET и GND. Вывод 24- линия ожидания WAIT. “Медленная” память может требовать большего времени для цикла считывания или записи и об этом сообщает микропроцессору путем активизации линии WAIT. Вывод 17- “немаскируемое прерывание” NMI. Активизация этой линии приводит к остановке выполнения микропроцессором текущей программы, и вместо нее микропроцессор выполняет программу прерывания, записанную специально для этой цели. В SPECTRUMe немаскируемое прерывание требует системного сброса, который выполняется записыванием 0 по адресу 23728. Вывод 16- “маскируемое прерывание”, INT. В SPECTRUMe сканирование клавиатуры и обмен в режиме реального времени называется “управляемым прерыванием”. Это означает, что электроника системы каждые 1/50 секунды активизирует INT, вызывая остановку выполнения микропроцессором основной программы и, вместо этого, выполнение программы сканирования клавиатуры. Способность Z80 реагировать на INT может управляться программистом специальными машинными командами.

ЛОГИЧЕСКАЯ ОРГАНИЗАЦИЯ Z80

В состав Z80 входят: устройство управления, регистр команд, программный счетчик, 24 регистра пользователя и арифметико-логическое устройство.

Устройство управления.

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

Регистр команд.

Термин “регистр” используется для описания простой ячейки памяти внутри Z80. Регистр содержит 8 бит (1 байт). В Z80 имеется большой блок регистров, и пересылка байтов данных к регистрам и от них является простейшей и наиболее важной чертой программирования в машинных кодах.

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

Программный счетчик.

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

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

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

Регистры пользователя (основные регистры).

Имеется 24 регистра пользователя. Все регистры однобайтовые, хотя обычно используются парами. Регистр А называется аккумулятором. Аккумулятор — основной регистр микропроцессора при различных операциях с данными. Большинство арифметических и логических операций осуществляется путем использования АЛУ и аккумулятора. Любая такая операция над двумя словами данных предполагает размещение одного из них в аккумуляторе, а другого — в памяти или еще в каком-нибудь регистре. Так при сложении двух слов, условно называемых А и В и расположенных в аккумуляторе и памяти соответственно, результирующая сумма загружается в аккумулятор, замещая слово А.

Регистр F — это флаговый регистр. Он часто рассматривается как набор восьми флаговых битов, связанных вместе, а не как отдельный регистр. Установление флага соответствует 1, сброс -0. Программист обычно имеет дело с 4-мя основными флагами. Это флаг нуля, флаг знака, флаг переноса и флаг четности-переполнения. Дополнительные флаги используются управляющим устройством и не могут быть использованы программистом непосредственно.

Регистровая пара HL.

При обращении к регистровой паре HL сначала указывается младшая часть (LOW), а затем старшая (HIGH). Память 64К может быть рассмотрена как 256 страниц по 256 адресов в каждой. В этом случае значение старшего байта указывает на используемую страницу.

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

Регистровая пара ВС и DE. Эти пары используются главным образом как адресные регистры. Регистры могут быть использованы как одинарные. Регистр В рекомендуется использовать в качестве счетчиков циклов.

Набор альтернативных регистров.

Z80 имеет альтернативный набор регистров для А,Р,Н,1ДС, D,E. Они обозначаются A’,F, и т.д. Существуют две специальные команды, которые позволяют обменивать основной и альтернативный набор регистров. После обмена для Z80 альтернативный набор становится основным, а основной — альтернативным.

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

Регистровые пары IX и IY используются для выполнения операции, которая включает индексацию. Это дает возможность работать со списком или таблицей. Начальный адрес списка или таблицы должен быть первоначально занесен в подходящую пару регистров IX иди IY. В программе монитора SPECTRUMa lY пара содержит адрес 23610 (5C3Ah), что является начальным адресом таблицы системных переменных. IX пара широко используется как указатель в программах обработки команд LOAD, SAVE, VERIFY, MERGE.

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

Железо — Микропроцессоры Zilog: Z80, 80,Z8000,Z80000.

ZX Power #02 24 мая 1997

Микропроцессоры семейства Zilog Z80,Z8000,Z80000. (P) Fisherman ________________________________ Микропроцессор Z80. Разработка микропроцессора Z80 фирмы Zilog базировалась на мик- ропроцессоры 8080/8085, но в не- го введено несколько дополни- тельных возможностей. Микропро- цессор Z80 применяется в домаш- них компьютерах и промышленных контроллерах. Этот микропроцессор совместим вверх с микропроцессором 8085 по системе комманд и машинному ко- ду, т.е. он может выполнять программы, написанные для микро- процессора 8085. Однако совмес- тимость в другом направлении достигается не всегда из-за на- личия в Z80 дополнительных ком- манд. Микропроцессор Z80A работает на частоте синхронизации 4МГц, а микропроцессор Z80B — на частоте до 6МГц. Функции контактов Z80. Функции контактов микропроцес- сора Z80 показаны на рис.1. Шина данных у него не мультиплексиру- ется с половиной шины адреса, как это сделано в микропроцессо- ре 8085. В связи с этим сокраще- но число линий шины управления, в частности имеются только три прерывания: RESET, INT, NMI (не- маскируемое). Однако такое сок- ращение не ведет к серьезным ог- раничениям, поскольку сигнал INT может разделяться множеством прерывающих устройств фирмы ZILOG. У микропроцессора Z80 нет вну- треннего генератора синхрониза- ции, поэтому требуется внешняя микросхема генератора синхрони- зации. Микропроцессор Z80. ┌────#────┐ A11 <-│1 40│-> А10 A12 <-│2 39│-> A9 A13 <-│3 38│-> A8 A14 <-│4 37│-> A7 A15 <-│5 36│-> A6 CLK ->│6 35│-> A5 D4 <->│7 34│-> A4 D3 <->│8 33│-> A3 D5 <->│9 32│-> A2 D6 <->│10 31│-> A1 5V ->│11 30│-> A0 D2 <->│12 29│<- GND D7 <->│13 28│-> RFSH D0 <->│14 27│-> M1 D1 <->│15 26│<- RESET INT ->│16 25│<- BUSRQ NMI ->│17 24│<- WAIT HALT <-│18 23│-> BUSAK MREQ <-│19 22│-> WR IORQ <-│20 21│-> RD └─────────┘ Рис.1 Смысл большинства сигналов очевиден из их мнемоник, напри- мер BUSRQ (запрос шины) и BUSAK (подтверждение запроса шины), но сигнал RFSH (регенерация уника- лен для ЦП фирмы Zilog. Он ста- новится активным между командами и помогает в регенерации динами- ческого ЗУПВ, которые подключа- ются к шинам ЦП. Архитектура микропроцессора. Внутренние регистры ЦП Z80: основные альтернативные A,F A’,F’ B,C B’,C’ D,E D’,E’ H,L H’,L’ вектор прерывания I регенерация памяти R индексный регистр IX индексный регистр IY указатель стека SP Рабочие регистры аналогичны соответствующим регистрам 8085, но в Z80 существуют дополнитель- но второй набор регистров(A’-L’) и второй регистр состояния (F’). Наличие второго набора регистров значительно облегчает работу при вызове подпрограммы или ISR, по- тому что программист может ис- пользовать для них альтернатив- ный набор,избегая сохранения со- держимого регистра основной про- граммы, например командами PUSH исключения в стек. 8-битный ре- гистр вектора прерывания I ис- пользуется ЦП для локализации начального адреса ISR когда ЦП работает в одном из трех режимов прерывания. Начальными адресами ISR явля- ются следующие: RESET — в PC загружается 0000h; NMI — в PC загружается 0066h в режиме 0 ЦП учитывает содержимое вектора пре- рывания I; INT — в режиме 1 в PC загру- жается 0038h; в режиме 2 ЦП обращается за на- чальным адресом в ячей- ку XXYY (здесь XX бе- рется из вектора преры- вания I,а YY вводится с шины данных от прерыва- ющего устройства). Для перевода ЦП в режим пре- рывания 0,1 или 2 в программе требуется специальная комманда, например IM 2. При задании режи- ма 2 прерывающее устройство (на- пример, PIO или CTC) должно ини- циализироваться на 8-битное зна- чение YY, которое возвращается в ЦП при генерировании прерывания. Регистр R регенерации памяти действует совместно с сигналом RFSH при регенерации динамичес- ких ЗУПВ. После каждой команды производится инкремент регистра R и его содержимое выдается на младшую половину шины адреса между командами. Два 16-битных индексных ре- гистра IX и IY обеспечивают в командах индексный режим адреса- ции. Вспомогательные микросхемы. Параллельный ввод-вывод PIO — микросхема предназначена для пе- редачи данных через 8-битные порты во внешние устройства. Последовательный ввод-вывод — универсальный асинхронный прие- мопередатчик UART применяется вместо микросхемы PIO,когда тре- буется передать 8 бит данных по одной последовательной, а не по восьми параллельным линиям. При- меняется для подключения к ком- пьютерам дисплеев, в линиях свя- зи между компьютерами, а также для некоторых принтеров. Таймер/счетчик CTC — представ- ляет собой программируемый счет- чик,в который ЦП может загружать и считывать информацию. Обычно в микросхеме CTC имеется от 1 до 4 счетчиков. Иногда один счетчик может быть включен в микросхему PIO. Для работы с ЦП Z80 фирма Zi- log выпускает микросхемы PIO,CTC и сдвоенную микросхему UART (на- зываемую DART). Применение Z80. Микропроцессор Z80 исполь- зуется во многих персональных домаш них (SinclairZX81,Sinclair ZX-SPECTRUM, Tandy TRS80) и кон- торских (Sharp MZ80,Research Ma- chines RML380L, Icarus Super- brain) компьютерах. Однокристальные микрокомпьютеры. В семейство однокристальных микрокомпьютеров Z8 фирмы Zilog входят несколько быстродействую- щих и мощных процессоров. Типич- ный микрокомпьютер состоит из ПЗУ/СППЗУ 2 или 4 Кбайт,ЗУПВ 144 байт,UART, двух счетчиков/тайме- ров и четырех портов (32 вход- ных-выходных сигналов). Семейство включает в себя: Z8601 -ПЗУ 2 Кбайт и приведенные устройства; Z8611 — ПЗУ 4 Кбайт -/-; Z8602 — без ПЗУ,корпус с 64 кон- тактами и шина памяти; Z8612 — ПЗУ 4 Кбайт -/-; Z8603 — ПЗУ 2 Кбайт, СППЗУ 2 Кбайт и приведенные выше уст- ройства; Z8613 — ПЗУ 4 Кбайт -/-; Z8671 — ПЗУ 2 Кбайт, приведенные выше устройства и интерпрета- тор tiny-BASIC. Система команд микропроцессо- ров Z8 полностью отличается от системы команд микропроцессора Z80. Каждый процессор Z8 содер- жит 144 байт внутреннего регист- рового ЗУПВ.Эти регистры включа- ют в себя адреса ввода-вывода (например, портов, таймеров или UART),а также 124 рабочих регис- тра общего назначения,все из ко- торых могут работать как аккуму- ляторы или индексные регистры, причем порты 0,1 можно использо- вать для доступа к шинам адреса и данных, если требуется расши- рить память или ввод-вывод. Микропроцессор Z80 попал в книгу рикордов Гинеса, как самый широкоиспользуемый процессор! МИКРОПРОЦЕССОРНОЕ СЕМЕЙСТВО Z8000. В семейство Z8000 фирмы Zilog входят несколько 16-битных ЦП, отличающихся друг от друга лишь адресуемой памятью (включая вир- туальную память), и несколько вспомогательных микросхем,напри- мер управления вводом-выводом и сопроцессоров.Основными ЦП явля- ются: Z8001, адресующий память 8 Мбайт (16+7 адресных линий) с 16-бит- ной шиной данных (48-контактный корпус типа DIP); Z8002,адресующий память 64 Кило- байт (16 адресных линий) с 16- битной шиной данных (40-кон- тактный корпус типа DIP). Устройство управления памятью Z8010 применяется вместе с ЦП Z8001 для управления адресным пространством 8 Мбайт, обеспечи- вая таким образом перемещение сегментов и защиту памяти.Микро- процессоры Z8003 и Z8004 почти идентичны Z8001, но в них не до- пускается организация виртуаль- ной памяти. Функции контактов Z8001. Микропроцессор Z8001 ┌─────═─────┐ AD0 <->│1 48│<->AD8 AD9 <->│2 47│<->SN6 AD10<->│3 46│-> SN5 AD11<->│4 45│<->AD7 AD12<->│5 44│<->AD6 AD13<->│6 43│<->AD4 STOP ->│7 42│-> SN4 M1 ->│8 41│<->AD5 AD15<->│9 40│<->AD3 AD14<->│10 39│<->AD2 Vcc —│11 38│<->AD1 VI ->│12 37│-> SN1 NVI ->│13 36│— GND SEGT ->│14 35│<- CLOCK NMI ->│15 34│-> AS RESET->│16 33│-> DECOUPLE MO <-│17 32│-> B/W MREQ <-│18 31│-> N/S DS <-│19 30│-> R/W ST3 <-│20 29│-> BUSAK ST2 <-│21 28│<- WAIT ST1 <-│22 27│<- BUSRQ ST0 <-│23 26│-> SNO SN3 <-│24 25│-> SNI └───────────┘ Рис.2 На рис.2 показаны функции контактов Z8001, 40-контактный Z8002 не имеет сигналов номера сегмента (SN0-SN6) и прерывания при нарушении сегмента (SEGT). Каждый ЦП семейства Z8000 обра- зует Z-шину, состоящую из сигна- лов адреса, данных и управления, по которой осуществляются пере- дачи данных между ЦП и памятью или вводом-выводом. Все ЦП обладают мультиплек- сной шиной адреса/данных,а сиг- нал строба адреса AS сигнализи- рует о наличии на шине адресной информации. Сигналы номера сег- мента SN0-SN6 в ЦП Z8001 дейст- вуют как дополнительные адресные линии; за счет увеличения двоич- ного кода на этих линиях осуще- ствляется переключение на другие сегменты по 64 Кбайт.Четыре сиг- нала состояния ST0-ST3 дешифри- руются в 16 дискретных сигналов, помогающих в распределении от- дельных пространств памяти для программ,данных и стека.Это осо- бенно удобно в ЦП Z8002,посколь- ку позволяет расширить адресный диапазон 64 Кбайт. Отметим наличие в микропроцес- сорах семейства Z8000 следующих дополнительных сигналов: a) кроме сигнала сброса RESET имеются четыре сигнала прерыва- ния: NMI (немаскируемое), NVI (невекторное), VI (векторное) и SEGT (нарушение сегментации). Последнее прерывание использу- ется при подключении к ЦП Z8001 устройства управления памятью; b) BUSREQ и BUSAK для организа- ции прямого доступа к памяти; c) сигналы состояния B/W (байт/ слово), N/S (обычный/системный режим) и R/W(считывание/запись) d) управляющие сигналы M1 и M0, расчитанные на последовательное включение, которые обеспечивают одному ЦП доступ к разделенному устройству в мультипроцессорной среде. АРХИТЕКТУРА МИКРОПРОЦЕССОРА. Имеется: 16 разрядные регистры: R0, R1, R2,R3,R4,R5,R6,R7,R8,R9, R10,R11,R12,R13, R14, R15 — блок рабочих регистров, которые можно использовать в качестве аккуму- ляторов и индексных регистров (кроме R0). Регистры R0…R7 рассчитаны на обработку байт и слов. Допус- каются обьединение 16 регистров в 32-битные регистровые пары и ограниченная обработка 64-битных данных. Програмный счетчик сос- тоит из 16-битного смещения и 7- битного номера сегмента.Указате- ли обычного (R14) и системного (R15) стеков, аккумуляторы и ин- дексные регистры.Слова флажков и управления. Програмный счетчик. Указатель новой области состоя- ния программы. Счетчик регенера- ции. ЦП может работать в системном и обычном режимах (они аналогич- ны режимам супервизора и пользо- вателя в ЦП MC68000).Текущий ре- жим определяется битом в регист- ре состояния. Для каждого режима предусмотрены отдельные указате- ли стека, представленные двумя регистрами R15(плюс 7 бит в двух регистрах R14).В системном режи- ме имеется доступ к дополнитель- ным командам, например командам ввода-вывода. Поэтому в мульти- программной среде программа пользователя (работающая в обыч- ном режиме) для выполнения задач ввода-вывода должна запрашивать операционную систему (работающую в системном режиме).От микропро- цессора Z80 в архитектуре сохра- нен счетчик регенерации для ди- намических ЗУПВ. Конвейеризации с помощью «оче- реди» комманд,как в микропроцес- сорах 8086/8088, здесь нет, но зато в ЦП Z8000 введена система раннего дешифрирования команд. Она позволяет производить дешиф- рирование независимо от выбран- ного режима адресации. Память адресуемая байтами, и бит A0 выбирает один из двух 8-битных банков с четными или нечетными адресами. Длина каждо- го кода операции равна слову.Ко- ды операции и слова данных всег- да начинаются по четным адресам памяти. СИСТЕМА КОММАНД. 9 режимов адресации: Регистровая: LD R4,R7; Непосредственная: LD R4,5; Косвенная регистровая:LD R4,(R2) (загрузить в R4 содержимое ячейки памяти, адрес которой находится в R2); Прямая: LD R4,%1800 (загрузить в R4 содержимое ячейки памяти 1800h); Индексная: LD R4,%4000(R1) (заг- рузить в R4 содержимое ячейки памяти, адрес которой равен сумме 4000h и содержимого R1) Базовая: LD R4,(R6)(4) (загру- зить в R4 содержимое ячейки памяти, адрес которой равен сумме смещения 4 и содержимо- го регистра R6); Базово-индексная:LD R4,(R5)(R12) (загрузить в R4 содержимое ячейки памяти, адрес которой равен сумме индекса из R12 и базы из R5); Относительная: JR +17 (перейти к PC+17); Неявная адресация:LDCTLB FLG,%31 (загрузить 31 байт регистров управления). Система комманд ЦП семейства Z8000 приведена ниже. Мнемоники команд напоминают мнемоники мик- ропроцессора Z80, что видно из следующего примера программы: LD R1,#%643 LD R2,<<3>>%5000 ADD R2,R1 OUT 3,RL2 1.Загрузить в R1 десятичное чис- ло 643. 2.Загрузить в R2 содержимое ячейки памяти из сегмента 3 со- смещением 5000h. 3.Прибавить R1 к R2; 4.Вывести младшую половину R2 в порт ввода-вывода с адресом 3; УПРАВЛЕНИЕ И ВИРТУАЛЬНАЯ ПАМЯТЬ. Для управления адресным диа- пазоном 8 Мбайт в ЦП Z8001 ис- пользуется микросхема Z8010 уп- равления памятью.Она преобразует 23-битный логический адрес от ЦП в 24-битный физический адрес,по- даваемый в память.Для преобразо- вания адреса привлекаются стар- шие 7 бит с SN6 по SN0, которые с помощью таблицы формируют 16- битный идентификатор блока (раз- мер блока 256 байт). Младшие 8 бит адреса подаются в память без преобразования. Физические адреса обеспечи- вают доступ к 64 сегментам памя- ти, размер которых составляет от 256 до 64 Кбайт. Благодаря нали- чию устройства управления памя- тью MMU Z8001 обладает следуещи- ми преимуществами: 1.Обьем физической памяти в системе может быть меньше, чем требуемая для всех программ ло- гическая память. Устройство MMU может управлять двумя различны- ми программами с одним и тем же диапазоном логических адресов, направляя их к разным областям физической памяти. В мультипрог- раммной среде операционная сис- тема может перепланировать физи- ческую память, чтобы выполнять программу в свободной области памяти. 2.В MMU допускается назначать каждому сегменту несколько атри- бутов для защиты памяти,например только считываемый,с запрещенным доступом DMA или только для сис- темного режима. Система управления памятью позволяет также реализовать удобную для мультипрограмной среды виртуальную память,в кото- рой внешняя память считается расширением основной памяти.Вир- туальная память обычно приме- няется в больших и средних ком- пьютерах. Операционная система, устройство управления памятью и диск совместно обеспечивают для пользовательских программ боль- шую физическую адресуемую па- мять. Для конкретных программы/сег- мента в MMU имеется флажок,изве- щающий ЦП (прерыванием) и вызы- вающий репрограммирование MMU для передачи дополнительного сегмента с диска в память. Уст- ройство MMU должно освободить место в памяти для этого допол- нительного сегмента,временно пе- ремещая другой сегмент на диск. Такие операции в памяти «невиди- мы» для пользовательских прог- рамм.Чтобы реализовать виртуаль- ную память фирма Zilog предала- гает ЦП Z8003 и Z8004. ВСПОМОГАТЕЛЬНЫЕ МИКРОСХЕМЫ. С микропроцессорами Z8000 мож- но использовать 8-битные вспомо- гательные микросхемы ЦП Z80(PIO, SIO и STC), если демультиплекси- ровать шину адреса/данных. Одна- ко для 16-битных ЦП фирма Zilog выпускает два новых семейства вспомогательных микросхем: — устойства Z-шины с номерами Z80XX, которые подключаются к шинам Z8000, включая и мульти- плексную шину адреса/данных; — универсальные устройства с но- мерами Z85XX, которые подклю- чаются к ЦП без мультиплексной шины адреса/данных. Переферийные микросхемы: для │ унив-е│ Z-шины│ │ функция │ │ Z8016 │ Z8516 │контроллер DMA Z8030 │ Z8530 │-/- послед.связи Z8031 │ Z8531 │-/- асинхр-й -/- Z8036 │ Z8536 │счетчик/таймер и Параллельный ввод-вывод Z8038 │ Z8538 │интерфейсное Устройство ввода-вывода Z8060 │ Z8560 │буффер FIFO и Расширитель Z-FIO Z8068 │ —— │процессор шифро- │ │вания данных Z8070 │ —— │процессор с пла- │ │вающей точкой Z8090/4, Z8590/4 — универсальный переферийный контроллер. Процессор с плавающей точкой Z8070 (FPU) фирма Zilog относит к так называемой расширенной процессорной архитектуре и назы- вает EPU (процессор расширения). Он подключается к шинам ЦП и вы- полняет арифметические операции над числами с плавающей точкой, работая параллельно с ЦП.Процес- сор с плавающей точкой контроли- рует командный поток совместно с ЦП,идентифицируя и выполняя свои комманды. Хотя внутренний формат FPU соответствует 80-битным чис- лам с плавающей точкой, передачи данных между ними в ЦП осуществ- ляется байтами и словами. МИКРОПРОЦЕССОРНОЕ СЕМЕЙСТВО Z80000. 32-битный ЦП Z80000 совместим вверх с 16-битным микропроцессо- рами семейства Z8000 (Z8001 и Z8002).По-видимому,в части внут- ренних возможностей он является наиболее мощным 32-битным микро- процессором, поскольку обладает внутренней кэш-памятью и устрой- ством управления памятью, а час- тота его синхронизации 25 МГц. В рассматриваемом приборе имеет- ся 6-каскадный конвейер,а произ- водительность ЦП соответствует 4-5 млн. операций в секунду. ЦП состоит из: — 64 разрядные регистры: RQ0, RQ4, RQ8, RQ12, RQ16,RQ20, RQ24, RQ28; — 32 разрядные регистры: RR0, RR2, RR4, RR6, RR8, RR10, RR12, RR14, RR16, RR18, RR20, RR22, RR24, RR26, RR28, RR30, причем пары, например,RR28,RR30 образуют 64-битный регистр RQ28 и т.д. — Регистры состояния программы; — Обычный указатель стека; — Регистры дескрипторов таблицы преобразования; — Указатель стека переполнения; — Регистр управления аппаратным интерфейсом; — Длинное слово управления сис- темной конфигурацией. Как и в предыдущих микропро- цессорах, здесь операции выпол- няются над байтами (8 бит), сло- вами (16 бит),длинными (32 бита) и очень длинными (64 бита) сло- вами. Один из бит в слове флаж- ков управления (т.е. в регистр состояния) определяет работу ЦП в обычном или системном режиме. Некоторые команды, например вво- да вывода, выполняются только в системном режиме (когда работает операционная система). Содержимое регистра состояния программы — это адрес памяти,от- куда при возникновении прерыва- ния загружаются значения в прог- рамный счетчик и в слово флажков и управления. Один из четырех регистров дескрипторов таблицы преобразования устройство управ- ления памятью использует для ад- ресации памяти. Указатель стека переполнения привлекается, когда возникает ошибка вычисления ад- реса при установленном прерыва- нии. Длинное слово управления системной конфигурацией содержит биты, определяющие функции внут- ренних кэш-памяти и устройства управления памятью. В системе команд ЦП Z80000 сохранены сложные команды ранее рассмотренных микропроцессоров, например команды блоковых пере- дач и поиска цепочек. У прибора имеются девять режимов адреса- ции, причем в вычислении адреса могут участвовать базовый ре- гистр, индексный регистр, и ре- гистр смещения. Определяемый в команде адрес памяти интерпрети- руется одним из следующих трех способов в зависимости от сос- тояния двух бит в слове флажков и управления: 1) компактное представление — 16 бит (обеспечивает адресацию 64 Кбайт); 2) сегментное представление — 32 бита (15 битный сегмент с 16 битным смещением для первых 2 Гбайт или 7-битный с 24-битным смещением для следующих 2 Гбайт); 3) линейное представление — 32 бита (адресация 4 Гбайт). В сегментном представлении адресные вычисления влияют толь- ко на поле смещения. Адрес,определенный в команде, называется логическим адресом, а устройство управления памятью преобразует его в физический ад- рес.Преобразование осуществляет- ся следующим образом: 1) с привлечением внутреннего буфера преобразования, где хра- нятся тэговые адреса и информа- ция о 16 последних страницах, к которым производились обраще- ния, аналогично кэш-памяти ко- манд/данных; 2) если буфер преобразования не фиксирует соответствия тэга, то ЦП обращается к таблицам преоб- разования в памяти, используя для этого один из четырех ре- гистров таблиц дескрипторов, а затем передает нужную информа- цию в тот элемент буфера преоб- разования, к которому дольше всего не было обращения. Кроме того, устройство управ- ления памятью обеспечивает сред- ства защиты, например обращение только для выполнения,разрешение считывания и записи. Внутренняя кэш-память состоит из 16 элементов по 16 байт каж- дый. Она регистрирует информацию о 16 ячейках памяти, к которым происходили последние обращения Когда в кэш-памяти получается «промах» при выборке команды, из смежных ячеек памяти передается целый пакет, что оптимизирует процесс считывания из памяти. Микропроцессор Z80000, как и его 16-битные предшедственники, работает с процессорами расшире- ния EPU (т.е. сопроцессорами). Сопроцессор с плавающей точкой Z8070 функционирует с 16- и 32- битными ЦП. К Z80000 можно под- ключать и другие вспомогательные микросхемы, например контроллер DMA Z8016. Для соединения компо- нентов в большие конфигурации фирма Zilog использует свой стандарт, называемый Z-шиной. Фирмой Zilog ведется разработ- ка новых 64 битных микропроцес- соров совместимых вверх с их предшедственниками. Также ведется работа по разра- ботке RISC процессоров. Словарь. DIP — корпус с двухсторонним расположением выводов: стан- дартный корпус микросхем. DMA (Direct Memory Access)- пря- мой доступ к памяти: передача данных между памятью и вво- дом-выводом без участия ЦП. ISR (Interrupt Service Routine)- процедура обслуживания преры- вания: программа,выполняющая- ся как реакция на прерывание. PC (Program Counter)- програмный счетчик: регистр ЦП, содержа- щий адрес следующей выполняе- мой команды. MMU (Memory Management Unit) — устойство управления памятью, диспетчер памяти: внутренние средства процессора, предназ- наченные для управления дос- тупом к физической памяти. Литература. Холленд Р. «Микропроцессоры и операционные системы: Краткое справочное пособие» Пер.с англ. ________________________________

Другие статьи номера:
style=»border-bottom: 2px solid #800; margin-top: 4px; margin-bottom: 4px»> Железо — Микропроцессоры Zilog: Z80, 80,Z8000,Z80000.
> Железо — Модем: мифы и реальность.
> Железо — Об AY-mouse (вопросы и ответы).
> Железо — Последовательный порт -VCOM- для Спектрума.
> Железо — Расширенный экран.
> Игромания — Описание игры Ghost Busters 2.
> Игромания — Описание игры Satan 2.
> Игромания — Описание игры Zombi.
> Интервью — VIC (X-Project) — как я начинал?
> Интервью — Интервью с Joker’ом (Mafia).
> К нашим читателям — «Время перемен»
> Ликбез — Борьба контроллеров или о том, как я ломал 800К дискеты.
> Ликбез — Восстановление программ (О причинах восстановления, характе- ристика мультифейсного взлома, типы мультифейсных взломов, восстановление методом поиска старого загрузчика).
> Ликбез — Структура MS-DOS диска.
> Обозрение — Gateway выпускает остатки Amiga.
> Обозрение — O компьютере «Silicon Graphics» (продолжение).
> От авторов — описание оболочки, приветствия и благодарности, адреса и контакты.
> Отдохнем — 60 американских анекдотов.
> Отдохнем — Бессознанка в армии.
> Отдохнем — Кремлевский трабл.
> Отдохнем — Протокол заседания по выборам главврача в психбольнице N15.
> Первый блин — Описание программы RAM-TEST v1.0.
> Первый блин — Путь к известности…
> Перспектива — Анонс STS v6.0.
> Перспектива — Новелла к игре WORDS.
> Перспектива — О игре 3D Killer (демо версия — Doommania).
> Перспектива — Предисловие к игре СТАЛКЕР.
> Рабочий стол — Как работать с программами: Cache File Manager 512k.
> Рабочий стол — Как работать с программами: Corrector v2.0.
> Рабочий стол — Как работать с программами: Melon Terminal.
> Рабочий стол — Как работать с программами: Symed v1.1
> Рабочий стол — Как работать с программами: ZX-Turbo Disassembler.
> Разное — Занимательная Вирусология.
> Разное — Новости от Progress, Dream Team, Rush, Phantasy, Copper Feet и т.д.
> Разное — О ZX сетях и не только…
> Разное — Письмоносец — обзор писем читателей.
> Реклама — Реклама и объявления.
> Фантастика — Винни Пух — 10 лет спустя.
> Фантастика — Г.Гарисон (продолжение, часть 4-6).
> Фантастика — Рассказ Е.Нестеренко «Корона и кольцо» (часть 1)
> Фантастика — Фантастический рассказ Театр.

Двоичная логика

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

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

Элемент «Буфер»


Представьте, что вы сидите в своей комнате, а ваш друг — на кухне. Вы кричите ему: «Друг, скажи, в коридоре горит свет?». Друг отвечает: «Да, горит!» или «Нет, не горит». Ваш друг — буфер между источником сигнала (лампочкой в коридоре) и приемником (вами). Более того, ваш друг — не какой-нибудь там обычный буфер, а буфер управляемый. Он был бы обычным буфером, если бы постоянно кричал: «Лампочка светится» или «Лампочка не светится».

Элемент «Не» — NOT


А теперь представьте, что ваш друг — шутник, который всегда говорит неправду. И если лампочка в коридоре светится, то он скажет вам «Нет, в коридоре совсем-совсем темно», а если не светится — то «Да, в коридоре свет горит». Если у вас есть такой друг на самом деле, значит, он воплощение элемента «Не».

Элемент «Или» — OR


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

Элемент «И» — AND


Та же самая квартира, вы, друг на кухне, торшер и люстра в коридоре. На ваш вопрос «В коридоре обе лампочки горят?» вы получаете ответ «Да» или «Нет». Поздравляю, теперь ваш друг — это элемент «И».

Элемент «Исключающее Или» — XOR


Повторим еще раз эксперимент для элемента «Или», но переформулируем свой вопрос к другу: «Друг, скажи, в коридоре только одна лампочка светит?». Честный друг ответит на такой вопрос «Да» только в том случае, если в коридоре действительно горит только одна лампочка.

Сумматоры

Четвертьсумматор


Четвертьсумматором называют элемент «Исключающее Или». Почему? Давайте разберемся.
Составим таблицу сложения для двух чисел в двоичной системе счисления:
0+0= 0
0+1= 1
1+0= 1
1+1= 10
Теперь запишем таблицу истинности элемента «Исключающее Или». Для этого обозначим светящуюся лампочку за 1, потухшую — за 0, и ответы друга «Да»/»Нет» как 1 и 0 соответственно.
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Очень похоже, не так ли? Таблица сложения и таблица истинности «Исключающего Или» совпадают полностью, кроме одного-единственного случая. И этот случай называется «Переполнение».

Полусумматор

При переполнении результат сложения уже не помещается в столько же разрядов, во сколько помещались слагаемые. Слагаемые — два однозначных числа (одна значащая цифра, понимаете?), а сумма — уже двузначное (две значащих цифры). Две цифры одной лампочкой («Светится»/»Не светится») уже не передать. Нужно две лампочки. Нужно — сделаем!


Кроме XOR, для сумматора нам потребуется элемент «И» (AND).
0 XOR 0 = 0 0 AND 0 = 0
0 XOR 1 = 1 0 AND 1 = 0
1 XOR 0 = 1 1 AND 0 = 0
1 XOR 1 = 0 1 AND 1 = 1
Тадам!
0+0= 00
0+1= 01
1+0= 01
1+1= 10
Наша вундервафля полусумматор работает. Его можно считать простейшим специализированным процессором, который складывает два числа. Полусумматор называется полусумматором потому, что с его помощью нельзя учитывать перенос (результат работы другого сумматора), то есть нельзя складывать три однозначных двоичных числа. В связи с этим из нескольких одноразрядных полусумматоров нельзя сделать один многоразрядный.
Я не буду вдаваться в подробности работы полных и многоразрядных сумматоров, просто надеюсь, что основную идею вы уловили.

Более сложные элементы

Мультиплексор


Предлагаю снова включить воображение. Итак, представьте. Вы живете в частном одноквартирном доме, возле двери этого дома стоит ваш почтовый ящик. Выходя на прогулку, вы замечаете странного почтальона, который стоит возле этого самого почтового ящика. И вот что он делает: достает кучу писем из сумки, читает номер на почтовом ящике, и в зависимости от номера на ящике бросает в него то или иное письмо. Почтальон работает мультиплексором. Он определенным образом (номер на конверте) определяет, какой отправить сигнал (письмо) по сигнальной линии (почтовый ящик).
Мультплексоры состоят обычно только из сочетаний элементов «И», «Или» и «Не». У одноразрядного мультиплексора один вход называется «выбор адреса», два входа с общим названием «входной сигнал» и один выход, который так и называется: «выходной сигнал».

Когда на «выбор адреса» подается 0, то «выходной сигнал» становится таким же, как первый «входной сигнал». Соответственно, когда на «выбор» подается 1, то «выходной сигнал» становится равным второму «входному сигналу».

Демультиплексор


А вот эта штучка работает с точностью до наоборот. На «выбор адреса» даем адрес, на «вход данных» даем данные, на выходе с номером «адрес» имеем данные со входа.

Счетчик


Для понимания работы счетчика вам опять понадобится ваш друг. Позовите его из кухни (надеюсь, он не сильно там скучал, и, главное, не съел всю вашу еду), и попросите делать вот что: пусть он запомнит число 0. Каждый раз, когда вы будете прикасаться к нему, он должен прибавить единицу к тому числу, которое помнит, сказать результат и запомнить его. Когда результат будет равен (допустим) 3, он должен выкрикнуть «Абракадабра!» и отвечать при следующем прикосновении, что сейчас он помнит число 0. Немного сложно? Смотрите:
Вы прикасаетесь к другу. Друг говорит «Один».
Вы прикасаетесь к другу. Друг говорит «Два».
Вы прикасаетесь к другу. Друг говорит «Три». Друг выкрикивает «Хабрахабр!». Критическая атака! Вы временно парализованы и не можете двигаться.
Вы прикасаетесь к другу. Друг говорит «Ноль».
Ну, и так далее. Очень просто, верно?
Вы, конечно, поняли, что ваш друг сейчас — это счетчик. Прикосновение к другу можно считать «тактирующим сигналом» или, попросту говоря, сигналом продолжения счета. Крик «Абракадабра» показывает, что запомненное значение в счетчике — максимальное, и что при следующем тактирующем сигнале счетчик будет установлен в ноль. Есть два отличия двоичного счетчика от вашего друга. Первое: настоящий двоичный счетчик выдает запомненное значение в двоичном виде. Второе: он всегда делает только то, что вы ему говорите, и никогда не опускается до дурацких шуточек, способных нарушить работу всей процессорной системы.

Память

Триггер


Давайте продолжим издеваться над вашим несчастным (возможно, даже воображаемым) другом. Пусть теперь он запомнит число ноль. Когда вы касаетесь его левой руки, он должен запоминать число ноль, а когда правой — число один. При вопросе «Какое число ты помнишь?» друг должен всегда отвечать то число, которое запоминал — ноль или один.
Простейшей запоминающей ячейкой является RS-триггер («триггер» значит «переключатель»). RS-триггер может хранить в себе один бит данных («ноль»/»один»), и имеет два входа. Вход Set/Установка (совсем как левая рука вашего друга) записывает в триггер «один», а вход Reset/Сброс (соответственно, правая рука) — «ноль».

Регистр


Немного сложнее устроен регистр. Ваш друг превращается в регистр тогда, когда вы просите его что-нибудь запомнить, а потом говорите «Эй, напомни мне, что я говорил тебе запомнить?», и друг правильно отвечает.
Регистр обычно может хранить в себе чуть больше, чем один бит. У него обязательно есть вход данных, выход данных и вход разрешения записи. С выхода данных вы в любой момент можете прочитать то, что в этом регистре записано. На вход данных вы можете подавать те данные, которые хотите в этот регистр записать. Можете подавать данные до тех пор, пока не надоест. В регистр все равно ничего не запишется до тех пор, пока на вход разрешения записи не подать один, то есть «логическую единицу».

Сдвиговый регистр


Вы когда-нибудь стояли в очередях? Наверняка стояли. Значит, вы представляете, каково быть данными в сдвиговом регистре. Люди приходят и становятся в конец очереди. Первый человек в очереди заходит в кабинет к большой шишке. Тот, кто был вторым в очереди, становится первым, а тот, кто был третьим — теперь второй, и так далее. Очередь — это такой хитрый сдвиговый регистр, из которого «данные» (ну, то есть люди) могут убегать по делам, предварительно предупредив соседей по очереди. В настоящем сдвиговом регистре, разумеется, «данные» из очереди сбегать не могут.
Итак, у сдвигового регистра есть вход данных (через него данные попадают в «очередь») и выход данных (из которого можно прочитать самую первую запись в «очереди»). Еще у сдвигового регистра есть вход «сдвинуть регистр». Как только на этот вход приходит «логическая единица», вся очередь сдвигается.
Есть одно важное различие между очередью и сдвиговым регистром. Если сдвиговый регистр расчитан на четыре записи (например, на четыре байта), то первая в очереди запись дойдет до выхода из регистра только после четырех сигналов на вход «сдвинуть регистр».

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

Если много-много триггеров объединить в регистры, а много-много регистров объединить в одной микросхеме, то получится микросхема оперативной памяти. У микросхемы памяти обычно есть вход адреса, двунаправленный вход данных (то есть в этот вход можно записывать, и с него же можно считывать) и вход разрешения записи. На вход адреса подаем какое-нибудь число, и это число выберет определенную ячейку памяти. После этого на входе/выходе данных мы можем прочитать то, что записано в эту самую ячейку.
Теперь мы одновременно подадим на вход/выход данных то, что хотим в эту ячейку записать, а на вход разрешения записи — «логическую единицу». Результат немного предсказуем, не так ли?

Процессор

BitBitJump

Процессоры иногда делят на CISC — те, которые умеют выполнять много разных команд, и RISC — те, которые умеют выполнять мало команд, но выполняют их хорошо. Одним прекрасным вечером мне подумалось: а было бы здорово, если бы можно было сделать полноценный процессор, который умеет выполнять всего одну команду. Вскоре я узнал, что существует целый класс однокомандных процессоров — OISC, чаще всего они используют команду Subleq (вычесть, и если меньше или равно нулю, то перейти) или Subeq (вычесть, и если равно нулю, то перейти). Изучая различные варианты OISC-процессоров, я нашел в сети сайт Олега Мазонки, который разработал простейший однокомандный язык BitBitJump. Единственная команда этого языка так и называется — BitBitJump (скопировать бит и перейти по адресу). Этот, безусловно эзотерический, язык является полным по Тьюрингу — то есть на нем можно реализовать любой компьютерный алгоритм.
Подробное описание BitBitJump и ассемблер для этого языка можно найти на сайте разработчика. Для описания алгоритма работы процессора достаточно знать следующее:

1. При включении процессора в регистрах PC, A и B записаны 0
2. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр A
3. Увеличиваем PC
4. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B
5. Увеличиваем PC
6. Записываем в ячейку с адресом, записанным в регистре B, содержимое бита с адресом А.
7. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B
8. Записываем в регистр PC содержимое регистра B
9. Переходим к пункту 2 нашего плана
10. PROFIT!!!
К сожалению, алгоритм бесконечный, и потому PROFIT достигнут не будет.

Собственно, схема

Схема строилась стихийно, поэтому правят бал в ней страх, ужас и кавардак. Тем не менее, она работает, и работает прилично. Чтобы включить процессор, нужно:

1. Ввести программу в ОЗУ
2. Нажать на включатель
3. Установить счетчик в положение 4 (это можно делать и аппаратно, но схема стала бы еще более громоздкой)
4. Включить тактовый генератор
Как видите, использованы один регистр, один сдвиговый регистр, одна микросхема ОЗУ, два двоичных счетчика, один демультиплексор (представленный компараторами), два мультиплексора и немного чистой логики.

Можете скачать схему в формате circ для программы Logisim, и поиграться.

Что дальше?

Во-первых, можно увеличить разрядность процессора — заменив 8-битные элементы на 16-битные.
Во-вторых, можно вынести ОЗУ из процессора, и добавить несложную схему, которая будет приостанавливать процессор, изменять ОЗУ и снова включать процессор. Такая схема будет выполнять функции простого контроллера ввода-вывода. Тогда можно будет сделать на базе этого процессора калькулятор, контроллер или еще какую-нибудь забавную бесполезную штуку.
В-третьих, можно воплотить всю эту схему в железе. Что я собираюсь сделать. Как только сделаю — обязательно расскажу и покажу.
Спасибо всем за внимание!
P.S. Ссылки (для тех, кому лень читать):
1. Процессоры URISC — ru.wikipedia.org/wiki/Urisc
2. Сайт языка BitBitJump — mazonka.com/bbj/index.html
3. Программа для моделирования логических схем Logisim — http://ozark.hendrix.edu/~burch/logisim/
4. Самодельный URISC (ORISC) процессор для Logisim — narod.ru/disk/31367690001/oo.circ.html

Как устроен процессор? Разбираемся вместе

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

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

Почему мы подняли тему процессоров? Все просто. За последние десять лет произошла настоящая революция в мире мобильных устройств.

Между этими устройствами всего 10 лет разницы. Но Nokia N95 тогда нам казалась космическим девайсом, а на ARKit сегодня мы смотрим с определенным недоверием

А ведь все могло бы сложиться иначе и потрепанный Pentium IV так бы и остался пределом мечтаний рядового покупателя.

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

3. Как работает транзистор

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

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

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

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

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

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

Но сначала разберемся с диодом

Вдыхаем!

Кремний (он же Si – «silicium» в таблице Менделеева) относится к категории полупроводников, а значит он, с одной стороны, пропускает ток лучше диэлектрика, с другой, – делает это хуже, чем металл.

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

Задача транзистора заключается в усилении слабого сигнала за счет дополнительного источника питания.

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

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

Так стали использовать 5-валентную примесь фосфора, за счет чего получили транзисторы n-типа. Наличие дополнительного электрона позволило ускорить их движение, повысив пропуск тока.

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

Предположим, мы взяли кремниевую пластину и легировали одну ее часть при помощи примеси p-типа, а другую – при помощи n-типа. Так мы получили диод – базовый элемент транзистора.

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

Если к диоду подключить источник питания таким образом, чтобы «–» касался p-стороны пластины, а «+» – n-стороны, протекание тока будет невозможно из-за того, что дырки притянутся в минусовому контакту источника питания, а электроны – к плюсовому, и связь между электронами p и n стороны будет утеряна за счет расширения объединенного слоя.

Но если подключить питание с достаточным напряжением наоборот, т.е. «+» от источника к p-стороне, а «–» – к n-стороне, размещенные на n-стороне электроны будут отталкиваться отрицательным полюсом и выталкиваться на p-сторону, занимая дырки в p-области.

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

4. Так как все-таки работает компьютер?

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

А теперь самое главное.

В зависимости от подаваемого напряжения, транзистор может быть либо открыт, либо закрыт. Если напряжение недостаточное для преодоления потенциального барьера (того самого на стыке p и n пластин) – транзистор будет находится в закрытом состоянии – в состоянии «выключен» или, говоря языком двоичной системы – «0».
При достаточно напряжении транзистор открывается, а мы получаем значение «включен» или «1» в двоичной системе.
Такое состояние, 0 или 1, в компьютерной индустрии назвали «битом».

Т.е. мы получаем главное свойство того самого переключателя, который открыл человечеству путь к компьютерам!

В первом электронном цифровом вычислителе ЭНИАК, а проще говоря – первом компьютере, использовалось около 18 тысяч ламп-триодов. Размер компьютера был сопоставим с теннисным кортом, а его вес составлял 30 тонн.

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

Момент 1. Итак, мы определились с тем, что такое бит. Но с его помощью мы можем лишь получить две характеристики чего-либо: или «да» или «нет». Для того, чтобы компьютер научился понимать нас лучше, придумали комбинацию из 8 битов (0 или 1), которую прозвали байтом.

Используя байт можно закодировать число от нуля до 255. Используя эти 255 чисел – комбинаций нулей и единиц, можно закодировать все что угодно.

Момент 2. Наличие чисел и букв без какой-либо логики нам бы ничего не дало. Именно поэтому появилось понятие логических операторов.

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

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

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

Это довольно примитивное объяснение принципа работы процессора и компьютера, но именно понимание этого позволяет нам двигаться дальше.

5. И началась транзисторная гонка

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

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

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

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

  • 1964 год IBM System/360. Компьютер, совместимый с универсальным программным кодом. Набор инструкций для одной модели процессора мог использоваться и для другой.
  • 70-e годы. Появление первых микропроцессоров. Однокристальный процессор от Intel. Intel 4004 – 10 мкм ТП, 2 300 транзисторов, 740 КГц.
  • 1973 год Intel 4040 и Intel 8008. 3 000 транзисторов, 740 КГц у Intel 4040 и 3 500 транзисторов при 500 кГц у Intel 8008.
  • 1974 год Intel 8080. 6 мкм ТП и 6000 транзисторов. Тактовая частота около 5 000 кГц. Именно этот процессор использовался в компьютере Altair-8800. Отечетсвенная копия Intel 8080 – процессор КР580ВМ80А, разработанный Киевским НИИ микроприборов. 8 бит.
  • 1976 год Intel 8080. 3 мкм ТП и 6500 транзисторов. Тактовая частота 6 МГц. 8 бит.
  • 1976 год Zilog Z80. 3 мкм ТП и 8500 транзисторов. Тактовая частота до 8 МГц. 8 бит.
  • 1978 год Intel 8086. 3 мкм ТП и 29 000 транзисторов. Тактовая частота около 25 МГц. Система команд x86, которая используется и сегодня. 16 бит.
  • 1980 год Intel 80186. 3 мкм ТП и 134 000 транзисторов. Тактовая частота – до 25 МГц. 16 бит.
  • 1982 год Intel 80286. 1,5 мкм ТП и 134 000 транзисторов. Частота – до 12,5 МГц. 16 бит.
  • 1982 год Motorola 68000. 3 мкм и 84 000 транзисторов. Этот процессор использовался в компьютере Apple Lisa.
  • 1985 год Intel 80386. 1,5 мкм тп и 275 000 транзисторов.Частота – до 33 МГц в версии 386SX.

Казалось бы, продолжать список можно было бы до бесконечности, но тут инженеры Intel столкнулись с серьезной проблемой.

6. Закон Мура или как чипмейкерам жить дальше

На дворе конец 80-х. Еще в начале 60-х один из основателей компании Intel Гордон Мур формулировал так называемый «Закон Мура». Звучит он так:

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

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

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

В качестве решения был найден вариант с использованием рядом дополнительных элементов:

  • кэш-памяти;
  • конвейера;
  • встроенного сопроцессора;
  • множителя.

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

Процессор Intel i486 состоял уже из 1,2 млн транзисторов, а максимальная частота его работы достигла 50 МГц.

В 1995 году к разработке присоединяется компания AMD и выпускает самый быстрый на тот момент i486-совместимый процессор Am5x86 на 32-битной архитектуре. Изготавливался он уже по 350 нанометровому техпроцессу, а количество установленных процессоров достигло 1,6 млн штук. Тактовая частота повысилась до 133 МГц.

Но гнаться за дальнейшим наращиванием количества установленных на кристалле процессоров и развитии уже утопической архитектуры CISC (Complex Instruction Set Computing) чипмейкеры не решились. Вместо этого американский инженер Дэвид Паттерсон предложил оптимизировать работу процессоров, оставив лишь самые необходимые вычислительные инструкции.

Так производители процессоров перешли на платформу RISC (Reduced Instruction Set Computing]. Но и этого оказалось мало.

В 1991 году выходит 64-битный процессор R4000, работающий на частоте 100 МГц. Через три года появляется процессор R8000, а еще через два года – R10000 с тактовой частотой вплоть до 195 МГц. Параллельно развивался рынок SPARC-процессоров, особенностью архитектуры которых стало отсутствие инструкций умножения и деления.

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

Вот лишь некоторые из появившихся с период с 1980 по 1995 год архитектур:

  • SPARC;
  • ARM;
  • PowerPC;
  • Intel P5;
  • AMD K5;
  • Intel P6.

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

В августе 1999 года на рынок выходе AMD K7 Athlon, изготовленный по 250 нанометровому техпроцессу и включающий 22 млн транзисторов. Позднее планку подняли до 38 млн процессоров. Потом до 250 млн.

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

8. Что ждет «обычные» процессоры

«Закон Мура» признан недействительным еще с 2016 года. Об этом официально заявил крупнейший производитель процессоров Intel. Удваивать вычислительную мощность на 100% каждые два года чипмейкеры больше не состоянии.

И теперь у производителей процессоров есть несколько малоперспективных вариантов.

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

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

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

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

Решение вполне имеет право на жизнь, и таким образом монополистам удастся доить потребителя еще пару десятков лет, но, в конце концов, технология опять-таки упрется в потолок.

Сегодня же, понимая стремительное развитие ARM-архитектуры, Intel провела негромкий анонс чипов семейства Ice Lake. Процессоры будут изготавливаться по 10-нанометровому технологическому процессу и станут основой для смартфонов, планшетов и мобильных устройств. Но произойдет это в 2019 году.

9. Будущее за ARM

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

Но, в тоже время, универсальность сыграла с этими процессорами и злую шутку. У x86 есть несколько ключевых недостатков:

  • сложность команд и откровенная их запутанность;
  • высокое потребление энергии и выделение теплоты.

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

В тоже время разработкой ARM (Arcon Risk Machine) занимаются сразу несколько компания. Еще в 1985 году в качестве основы для дальнейшего развития архитектуры разработчики выбрали платформу RISC.

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

Более того, ARM изначально создавался исключительно как конкурент x86. Разработчики ставили задачу построить архитектуру, более эффективную чем x86.

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

Архитектуру ARM в свое время поддержала компания Apple, запустив производство планшетов Newton на базе семейства ARM-процессоров ARM6.

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

  • мобильность;
  • автономность.

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

10. Почему ARM – неоспоримый лидер

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

Но во сколько мощнее тот же айфон?

Само по себе сравнение двух разных архитектур – штука очень сложная. Замеры здесь можно выполнить лишь приблизительно, но понять то колоссальное преимущество, что дает построенные на ARM-архитектуре процессоры смартфона, можно.

Универсальный помощник в таком вопросе – искусственный тест производительности Geekbench. Утилита доступна как на стационарных компьютерах, так и на Android и iOS платформах.

Средний и начальный класс ноутбуков явно отстает от производительности iPhone 7. В топовом сегменте все немного сложнее, но в 2017 году Apple выпускает iPhone X на новом чипе A11 Bionic.

Там, уже знакомая вам архитектура ARM, но показатели в Geekbench выросли почти вдвое. Ноутбуки из «высшего эшелона» напряглись.

А ведь прошел всего один год.

Развитие ARM идет семимильными шагами. Пока Intel и AMD год за годом демонстрируют 5 – 10% прирост производительности, за тот же период производители смартфонов умудряются повысить мощность процессоров в два – два с половиной раза.

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

Установите на стол моноблок с мощным 18-ядерный процессором, который «в клочья разрывает ARM-архитектуру», а затем положите рядом iPhone. Чувствуете разницу?

11. Вместо вывода

Объять 80-летнюю историю развития компьютеров в одном материале невозможно. Но, прочитав данную статью, вы сможете понять как устроен главный элемент любого компьютера – процессор, и чего стоит ждать от рынка в последующие годы.

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

Но нужна ли вам как покупателю такая мощность?

Вряд ли вас не устраивает производительность iPad Pro или флагманского iPhone X. Не думаю, что вы недовольны производительностью расположившейся на кухне мультиварки или качеством картинки на 65-дюймовом 4K-телевизоре. А ведь во всех этих устройствах используются процессоры на ARM-архитектуре.

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

На ARM успела посмотреть и Google – операционная система Chrome OS поддерживает эту архитектуру. Появились сразу несколько дистрибутивов Linux, которые также совместимы с данной архитектурой. И это только начало.

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

Похвали автора0

Рейтинг поста:

(4.39 из 5, оценили: 18) 🤓 Хочешь больше? Подпишись на наш Telegram. … и не забывай читать наш Facebook и Twitter 🍒iPhones.ru Большая статья, наливайте чай.