20.04.2013

»сследование кристалла: недокументированные флаги микропроцессора 8085

image

” микропроцессора 8085 есть два недокументированных флага состо€ни€: V и K. Ёти флаги можно исследовать, пригл€девшись к кристаллу микросхемы, и их функци€, как вы€сн€етс€, отличаетс€ от предыдущих толкований.

јвтор: Ken Shirriff

” микропроцессора 8085 есть два недокументированных флага состо€ни€: V и K. Ёти флаги можно исследовать, пригл€девшись к кристаллу микросхемы, и их функци€, как вы€сн€етс€, отличаетс€ от предыдущих толкований.   тому же реализаци€ этих флагов говорит о том, что это было сделано намеренно, и тем самым возникает закономерный вопрос, почему эти флаги не задокументированы и не поддерживались компанией Intel. Ќаконец, изучение схем реализации флагов позвол€ет узнать любопытные детали физического процесса работы микропроцессора.

” микропроцессора 8085, как и большинства его собратьев, есть флаговый регистр, в котором хранитс€ информаци€ о состо€нии операции. ‘лаговый регистр состоит из восьми бит: бит 0 хранит флаг переноса, бит 2 хранит флаг четности, бит 3 всегда установлен в 0, бит 4 хранит дополнительный перенос (полуперенос), бит 6 хранит нулевое состо€ние, и бит 7 хранит знаковый знак. ¬ вышеупом€нутом списке пропущены биты 1 и 5. –ассмотрим их повнимательнее.

≈ще в 1979 году пользователи установили, что эти флаговые биты выполн€ют реальные функции [1]. Ѕит 1, также называемый V-флаг, хранит флаг переполнени€ операций со знаковыми числами, то есть показывает, умещаетс€ ли в 1 байт результат сложени€ или вычитани€ знаковых чисел [2]. Ѕит 5 плохо изучен, и у него есть несколько имен: K, X5 или UI. ¬ случае операций увеличение/уменьшени€ этот бит указывает на 16-битное переполнение или потерю значащих разр€дов, однако в случае арифметических операций имеет совершенно другое значение. ‘лаг описан в [1][3] как:

K = O1·O2 + O1ЈR + O2ЈR, где:

O1 = знак операнда 1

O2 = знак операнда 2

R = знак результата операции

ƒл€ вычитани€ и сравнений, замените знак O2 на противоположный.

ƒалее в этой статье € покажу, что это описание ошибочно. Ќа самом деле  -флаг €вл€етс€ результатом взаимоисключающего »Ћ» со знаком результата, и цель K-флага – сравнение чисел со знаком.

—хемы дл€ K и V флагов.

—ледующа€ схема демонстрирует цепь дл€ K и V флагов микропроцессора 8085. V-флаг представл€ет собой взаимоисключающее »Ћ» между переносом в старшем бите и вне старшего бита. Ёто стандартна€ формула дл€ вычислени€ переполнени€ [2] при сложении или вычитании чисел со знаком (микропроцессор 6502 вычисл€ет то же самое переполнение другим способом). ‘лаг V заполн€етс€ и после других арифметических операций, однако в этом случае не €вл€етс€ полезным [4]. –егистр-защелка хранит значение V-флага под управлением сигнала store_v_flag.  роме того, значение флага может быть считано с шины и сохранено в регистре под управлением сигнала bus_to_flags; так работает инструкци€ POP PSW, котора€ извлекает флаги из стека. ¬ конце концов, супербуфер с трем€ состо€ни€ми (большой треугольник) записывает значение флага в шину, когда это необходимо.

—хема K-флага показана справа. ѕерва€ его функци€ Ц переполнение/отрицательное переполнение дл€ инструкции INX/DEX. –еализаци€ этого механизма довольно проста: управл€юща€ лини€ carry_to_k_flag устанавливает в K-флаг перенос от счетчика инкремента/декремента. —ледующа€ функци€ K-флага Ц чтение информации с шины данных дл€ инструкции POP PSW (как и в случае с V-флагом). », наконец, последн€€ функци€ K-флага Ц результат проверки чисел со знаком. K-флаг €вл€етс€ результатом операции взаимоисключающего »Ћ» между V-флагом и знаковым битом результата операции. ¬ случае с вычитанием или проверкой K-флаг равен 1, если второе значение больше первого [5]. K-флаг используетс€ в других арифметических операций, однако бесполезен за исключением проверки или вычитани€ знаковых чисел. [4]

Ќа рисунке показана схема микропроцессора 8085 дл€ не задокументированных K и V флагов. ‘лаги генерируютс€ на основе битов переноса и результатов јЋ”.  -флаг может быть установлен битом переноса от счетчика инкремента/декремента.

Ќазначение K-флага было непон€тным: «ќн не похож ни на один стандартный флаговый бит» [1]. ѕон€тно, что он используетс€ дл€ инкремента/декремента, однако в случае с арифметическими операци€м, зачем выполн€ть взаимоисключающее »Ћ» между флагом переполнени€ и битом знака? ќказываетс€, K-флаг полезен дл€ сравнений знаковых чисел.  огда вы сравниваете два знаковых значени€, первое меньше второго, если взаимоисключающее »Ћ» знакового бита и переполнени€ равно 1 [6]. ¬от что на самом деле вычисл€ет K-флаг.

√л€д€ на схему, показанную выше, очевидно, что V и K-флаги были умышленно добавлены в микросхему. (¬ отличие от микропроцессора 6502, где не задокументированные коды операций имеют непредсказуемые результаты из-за нестабильной работы цепи с непредвиденными входными сигналами [7]). ѕочему компани€ Intel использовала цепь флагов, ни слова не сказав об этом в документации? ѕо моей теории было прин€то решение не поддерживать K или V флаги в процессоре 8086 и, таким образом, дл€ совместимости документации они убрали описани€ этих флагов из документации на процессор 8085, однако оставили цепь в микросхеме.

 ристалл

Ќа рисунке показан микропроцессор 8085 с шиной данных, јЋ”, логической схемой флагов, регистрами и счетчиком инкремента/декремента.

ƒалее в этой статье будет показано, как работают цепи V и K флагов с более детальным изучением схем кристалла. Ќа картинке выше показана микросхема процессора 8085 и компоненты, которые мы будем обсуждать. ¬ верхнем левом углу находитс€ јЋ” (арифметико-логическое устройство), где происход€т вычислени€ (подробности). Ўина данных €вл€етс€ основной артерией микросхемы, соедин€€ информационные выводы (левый верхний угол), јЋ”, регистры данных, флаговый регистр и дешифратор команд (правый верхний угол). ¬ левом нижнем углу расположен блок 16-битных регистров. Ќиже блока регистров расположена цепь 16-битного инкремента/декремента, котора€ управл€ет увеличением программного счетчика, а также используетс€ 16-битными инструкци€ми инкремента/декремента. ¬ правом нижнем углу у цепи инкремента/декремента есть выходной сигнал переноса. ≈го мы коснемс€ во врем€ обсуждени€ K-флага. ѕо некоторым причинам у јЋ” младший бит находитс€ справа, а у регистров младший бит находитс€ слева.

Ћогическа€ схема флагов находитс€ под јЋ” вместе мощными формировател€ми пр€мо наверху шины данных. ѕо-видимому, флаги расположены в случайном пор€дке со знаковым битом 7 слева и битом 6 (нулевое состо€ние) справа. ѕоскольку схема логики переноса сложна (обрабатыва€ не только арифметические операции, но и сдвиги, циклические сдвиги, инвертирование переноса и дес€тичную коррекцию), то ее разместили справа от јЋ”, где дл€ нее достаточно места.

ѕодробное рассмотрение схемы V-флага

“еперь рассмотрим цепь V-флага в увеличенном масштабе, на схеме выше она отмечена как V1. √л€д€ на кристалл под микроскопом, мы видим металлический слой микросхемы, содержащий в основном горизонтальные соединени€ (см. белые линии ниже). ¬ нижней части микросхемы находитс€ 8-битна€ шина данных. ƒругие провода: питание, Ђземл€ї и набор сигналов. ¬ то врем€ как у современных процессоров может быть дес€ть и более металлических слоев, у микропроцессора 8085 всего лишь один слой. ѕод металлическим слоем можно увидеть некоторые цепи.

Ќа рисунке показан металлический слой микропроцессора 8085, увеличенный в месте нахождени€ цепи V-флага.

≈сли удалить металлический слой, становитс€ виден кремниевый слой. ѕ€тнисто-зеленые/лиловые участки €вл€ютс€ чистым кремнием. –озовые участки Ц легированный кремний N-типа. —ероватые участки Ц поликристаллический кремний, который служит в качестве соединительных проводов.  огда поликремний пересекает легированный кремний, образуютс€ транзисторы, которые на рисунке обозначены светло-зелеными участками. ќбратите внимание, что транзисторы занимают малую часть микросхемы; основна€ ее часть отведена под соединени€. ћаленькие квадраты Ц переходы, соединени€ с металлическим слоем.

Ќа рисунке показана цепь V-флага микропроцессора 8085. ѕод металлическим слоем находитс€ кремний/поликремний. Ўина данных не видна, поскольку она находитс€ в металлическом слое, в нижней трети изображени€. ѕр€моугольники внизу соедин€ютс€ шину данных и регистры.

ћќѕ-транзисторы

¬ контексте нашей дискуссии ћќѕ-транзисторы можно считать простыми переключател€ми, которые закрываютс€, если на входе затвора 1 и открываютс€, если на входе затвора 0. ћќѕ-транзистор реализован путем смешени€ двух диффузионных областей и поликремниевой перемычки над затвором. »зол€ционный слой предотвращает прохождение тока между затвором и остальной частью транзистора. Ќа рисунке ниже диффузионные области n+ отмечены розовым цветом, поликремниевый проводник затвора матово-зеленым цветом, а изолирующий слой диоксида кремни€ Ц цветом морской волны.

Ћогическа€ схема »Ћ»-Ќ≈

Ћогическа€ схема »Ћ»-Ќ≈ €вл€етс€ фундаментальным блоком микропроцессора 8085. Ёто довольно проста€ схема, котора€ может входить в состав более сложной логической цепи. —ама схема состоит из двух транзисторов и нагрузочного транзистора. ≈сли на вход какого-либо транзистора (или обоих) подаетс€ 1, тогда соответствующий транзистор замыкаетс€ на Ђземлюї. »наче, оба транзистора открыты и на нагрузочном транзисторе по€вл€етс€ выходной сигнал. Ќа схеме нагрузочный транзистор обозначен как резистор, однако, на самом деле это транзистор, работающий в режиме обеднени€ дл€ лучшей производительности.

”величив одиночный блок »Ћ»-Ќ≈ микропроцессора 8085, мы увидим, как реализован логический элемент. Ѕольшую часть схемы занимают соединени€, а транзисторы лишь небольшую ее часть. —лева оба транзистора подсоединены к Ђземлеї, а справа соединены между собой. ѕо техническим причинам нагрузочный транзистор более крупный, чем два предыдущих [8].

„тобы пон€ть механизм работы цепи, проследите путь от Ђземлиї к каждому транзистору, и далее через затвор на выходной провод. ¬идно, что от Ђземлиї к выходу идут два провода, и если на каком-либо проводе входной сигнал равен 1, тогда на выходе будет 0.

–асположение логического элемента выбрано дл€ наибольшей эффективности, с учетом ограниченности площади расположени€ питани€ (VCC), Ђземлиї и других соединений. ¬ итоге мы видим слегка необычную схему. ѕитание, Ђземл€ї и входные сигналы наход€тс€ в металлическом слое выше (не показанным здесь). ќни соединены с цепью через переходы между металлическим слоем и кремнием.

Ќа рисунке показаны компоненты элемента »Ћ»-Ќ≈ микропроцессора 8085. ≈сли на каком-либо входе единичный сигнал, соответствующий транзистор замыкаетс€ на Ђземлюї, иначе, на выходе нагрузочного транзистора по€вл€етс€ ненулевой выходной сигнал.

Ћогические элементы типа исключающее »Ћ»

Ћогический элемент типа исключающее »Ћ» (когда на выходе 1, если только на одном из входов 1) €вл€етс€ ключевым компонентом схемы флага. Ќа его примере показываетс€, как можно реализовать сложную логику, использу€ простые элементы. Ќа схеме ниже показываетс€ реализаци€ элемента Ђисключающее »Ћ»ї из элементов Ђ»Ћ»-Ќ≈ї и Ђ»-Ќ≈ї; легко проверить, что если обоих входах 0 или 1, тогда на выходе будет 0.

¬озможно, вы задаетесь вопросом, почему в микропроцессоре используетс€ так много Ђстранныхї элементов, вместо Ђнормальныхї элементов типа Ђ»ї. ¬се дело в том, что логический элемент Ђ»-Ќ≈ї можно легко реализовать при помощи полевых транзисторов, даже проще чем обычный элемент типа Ђ»ї. ƒва самых правых транзистора реализуют логику Ђ»-Ќ≈ї, если на обоих входах 1, тогда выход замыкаетс€ на Ђземлюї. “ранзистор слева реализует другую часть логики Ђ»Ћ»-Ќ≈ї - если на входе 1, то нагрузочный транзистор замыкаетс€ на Ђземлюї.

Ќа схеме ниже показана логическа€ схема, реализующа€ логику исключающее »Ћ», котора€ используетс€ дл€ генерации K-флага. —лева Ц элемент Ђ»Ћ»-Ќ≈ї, справа Ц Ђ»-Ќ≈ї. ќбе цепи выделены пунктирной линией.  ак и прежде, цепь в основном состоит из соединительных проводов, а транзисторы занимают малую часть схемы (зеленые участки, между розовыми диффузионными област€ми).

Ћогический элемент типа исключающее »Ћ», собранный из элементов Ђ»Ћ»-Ќ≈ї и Ђ»-Ќ≈ї. ≈сли на обоих входах 0, на выходе элемента Ђ»Ћ»-Ќ≈ї будет 1, и следующий транзистор замкнет выходной провод на землю (то есть на выходе будет 0). ≈сли на обоих входах по 1, транзисторы составл€ющие конструкцию Ђ»-Ќ≈ї замыкают выходной провод на Ђземлюї, иначе, на выходе будет ненулевой сигнал.

‘лаговый регистр-защелка

 аждый бит флага хранитс€ в простом регистре-защелке, реализованном на двух инверторах. ƒл€ хранени€ значени€ 1 правый инвертор выдает значение 0, поступающее на инвертор слева, который выдает 1. ¬ыходной сигнал левого инвертора вновь поступает на правый инвертор. 0 хранитс€ аналогичным образом (только входной сигнал противоположен).  огда синхронизирующие импульсы низкой амплитуды проходной транзистор открыт, разрыва€ цикл. ¬ этом режиме можно записать входные данные. ¬ыходной сигнал (/out) снимаетс€ c дополнительного вывода с инвертора.

¬ы можете спросить, почему же регистр не тер€ет данные, когда синхронизирующие импульсы низкой амплитуды. Ёто интересный трюк, называемый динамической логикой. ѕоскольку затвор ћќѕ-транзистор содержит изолирующий слой, у него очень большое сопротивление. —ледовательно, на затворе какое то врем€ [9] будет оставатьс€ электрический зар€д в тот период, пока проходной транзистор открыт.  огда проходной транзистор закрываетс€, электрический зар€д обновл€етс€.

Ќа рисунке показана схема регистра-защелки, котора€ используетс€ в микропроцессоре 8085 дл€ хранени€ флага. «ащелка работает на двух инверторах.  огда синхроимпульсы низкой амплитуды, в регистр можно записать новое значение.

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

 аждый флаг в микропроцессоре 8085 хранитс€ регистре-защелке на двух инверторах. Ќа рисунке показана схема дл€ V-флага.  расные стрелки показывают направление потока данных.

”правление шиной данных посредством супербуфера

ƒруга€ интересна€ особенность схемы флага Ц Ђсупербуферї. Ѕольшинство транзисторов в микропроцессоре 8085 передают сигнал на короткое рассто€ние. ќднако при передаче данных по шине через всю микросхему требуетс€ намного больше мощности. ƒл€ этого и используетс€ супербуфер. ¬ супербуфере один транзистор понижает выходной сигнал, а другой транзистор повышает (в отличие от стандартного логического элемента, где дл€ повышени€ амплитуды сигнала используетс€ нагрузочный транзистор, работающий в режиме обеднени€).   тому же, оба эти транзистора значительно крупнее, поскольку работают с токами большей величины [8]. “ранзисторы показаны на схеме ниже в нижней ее части.

≈ще одна особенность супербуфера Ц три состо€ни€. ¬ третьем состо€нии (помимо первых двух, когда на выходе единичный и нулевой выходной сигнал) на выходе отсутствует сигнал. “аким образом, флаги не вли€ют на шину данных за исключением случаев, когда это необходимо. Ќа схеме видно, что если на управл€ющем входе значение 1, то на выходе обоих элементов Ђ»Ћ»-Ќ≈ї значение 0 и оба транзистора в нерабочем состо€нии.

Ќа рисунке показана цепь супербуфера, который используетс€ в микропроцессоре 8085 дл€ управлени€ шиной данных.

Ќа следующей схеме показаны два управл€ющих транзистора, а также провод, используемый дл€ чтени€ флага с шины данных (элементы Ђ»Ћ»-Ќ≈ї не показаны). ќбратите внимание на величину транзисторов в сравнении с рассмотренными ранее. ƒл€ каждого флагового бита требуетс€ подобный супербуфер. ƒаже дл€ бита 3, который всегда равен 0, требуетс€ большой транзистор дл€ передачи нул€ по шине. ”дивительно то, что даже подобными флагам требуетс€ место на кристалле.

 аждый флаг в микропроцессоре 8085 использует супербуфер дл€ передачи значени€ по шине данных. Ќа рисунке показаны два больших транзистора, которые управл€ют V-флагом по шине данных 1

ќбъедин€ем все вместе

ћы рассмотрели детали реализации логического элемента типа исключающее »Ћ», который вычисл€ет K-флаг. “акже был рассмотрен регистр-защелка и супербуфер, используемый в цепи V-флага. —ледующий рисунок показывает общую схему, где все части соединены вместе. –егистр защелка и формирователь дл€  -флага наход€тс€ справа за пределами изображени€. —хемы соединены между собой посредством металлического сло€ (на рисунке не показан). —равните эту схему с принципиальной схемой, представленной вначале статьи, чтобы пон€ть, как реализованы компоненты. ƒва логических блока типа исключающее »Ћ» реализованы совершенно по-разному, поскольку их макеты были оптимизированы под используемые сигналы.

Ќа рисунке показаны отдельные блоки микропроцессора 8085, реализующие недокументированные V и K флаги. јЋ” формирует биты переносов (carry6 и carry7) и результат выражени€ (result7). ѕравый логический элемент типа исключающее »Ћ» вычисл€ет V-флаг, а логический элемент по середине Ц K-флаг. —права находитс€ регистр-защелка дл€ V-флага и супербуфер, которые передает значение флага по шине данных. –егистр-защелка и супербуфер дл€ K-флага наход€тс€ также справа (на схеме не показаны).

≈сли внимательнее присмотретьс€ к кремниевому кристаллу, транзисторам и логическим элементам, то становитс€ пон€тен механизм работы сложных цепей. ”дивительно то, что сложные компьютеры, используемые нами, состо€т из таких простых компонент.  онечно, современные процессоры с миллиардами транзисторов более сложны, чем микропроцессор 8085, состо€щий из тыс€ч транзисторов, однако, базовые принципы работы остаютс€ теми же.

≈сли материал этой статьи оказалс€ дл€ вас интересным, вы можете ознакомитьс€ с моими предыдущими стать€ми по анализу флага переполнени€ в микропроцессоре 6502 или јЋ” в микропроцессоре 8085. “акже, возможно, вас заинтересует книга The Elements of Computing Systems, где объ€сн€етс€, как сконструировать компьютер, начина€ с булевой логики.

Ѕлагодарности

»зображени€ микросхемы вз€ты с сайта visual6502.org.  оманда visual6502 проделала большую работу, окуна€ микросхемы в кислоту дл€ удалени€ внешнего сло€ и сделав много фотоснимков кристалла с близкого рассто€ни€. ѕавел «има (Pavel Zima) сконвертировал фотографии в изображени€ печатных плат, сеть транзисторов и имитационную модель микропроцессора 8085.

ѕримечани€ и ссылки

[1] Ќе задокументированные инструкции и флаги микропроцессора 8085 были обнаружены ¬ольфгангом ƒенхардтом (Wolfgang Dehnhardt) и ¬илли ћ. —оренсеном (Villy M. Sorensen) в процессе программировани€ на ассемблере 8085 и подробно описаны в статье Unspecified 8085 op codes enhance programming, раздела Engineer's Notebook, журнала ЂElectronicsї, 18-го €нвар€ 1979 года стр. 144-145.

[2] ѕодробное описание флага переполнени€ смотрите в моей статье The 6502 overflow flag explained mathematically. —уществует несколько способов вычислени€ переполнени€, и микропроцессор 6502 использует другой метод.

[3]  омпани€ Tundra Semiconductor разработала микросхему CA80C85B,  ћќѕ-версию 8085. „то интересно, не задокументированные опкоды и флаги описываютс€ в даташитах: CA80C85B datasheet, 8000-series components.

—амым интересным €вл€етс€ то, что описани€ Ђновыхї флагов и инструкций почти полностью скопированы из статьи ƒенхардта. –азница лишь в том, что по€вились ошибки, отсутствуют вводные слова и переименован K-флаг в UI-флаг.   тому же, как € говорил ранее, формула расчета K/UI флагов не всегда верна.  ажетс€, несмотр€ на производство микросхемы, в компании Tundra не до конца понимали, как работали схемы.

[4] »спользование V-флага имеет смысл дл€ сложени€ и вычитани€ чисел со знаком, а K-флага дл€ вычитани€ и сравнени€ чисел со знаком. ћногие другие операции измен€ют этот флаг, однако в этих случа€х он бесполезен.

V-флаг равен 0 дл€ операций RRC, RAR, AND, OR и XOR, поскольку у этих операций посто€нные значени€ переноса наход€тс€ внутри јЋ” (подробности). ќперации RLC и RAL работают только с аккумул€тором, добавл€€ его значение к самому себе, что можно рассматривать как суммирование: V-флаг устанавливаетс€ в случае, если результат операций чисел со знаком больше байта. ƒл€ команды DAA (дес€тична€ коррекци€) V-флаг работает также, как и при суммировании: V-флаг будет установлен только при переносе старшего значащего разр€да (старша€ цифра переходит от 7 к 8). ’от€ в BCD-числах отсутствует знак, и V-флаг дл€ операции DAA бесполезен. Ѕолее полезен V-флаг дл€ операции DAD, поскольку отражает 16-битное знаковое переполнение и вычисл€етс€ по результатам сложени€ старших разр€дов. ƒл€ инструкции INR переполнение возникает при переходе от значени€ 0x7f к 0x80 (от 127 к -128); заметьте, что переходу от 0xff к 0x00 соответствует переход от -1 до 0, что €вл€етс€ не знаковым переполнением, а беззнаковым. јналогичным образом инструкци€ DCR устанавливает V-флаг при переходе от шестнадцатеричного значени€ 80 к 7f (от -128 к 127), что €вл€етс€ также беззнаковым переполнением.

¬ случае с K-флагом есть несколько особых случаев. ƒл€ инструкций AND, OR и XOR K-флаг равен биту знака, поскольку V-флаг равен 0. ќбратите внимание, что K-флаг дл€ инструкций INR/DCR рассчитываетс€ полностью по-другому, чем дл€ инструкций INX/DCX. ƒл€ инструкций INR и DCR K-флаг вычисл€етс€ как исключающее »Ћ» между флагами S и V (S^V) и почти всегда равен S. ƒл€ инструкции DAA K-флаг устанавливаетс€, если S^V Ц истинно, что не имеет полезных применений, поскольку BCD-значени€ беззнаковые.

ќпубликованна€ формула K-флага ошибочна дл€ инструкции XOR, если оба аргумента отрицательные.

[5] —ледующа€ таблица иллюстрирует 8 возможных случаев при сравнении знаковых значений A и B. ¬ходные сигналы: старший бит A, старший бит B и перенос бита 6 при вычитании B из A. ¬ыходные сигналы: флаг переноса, отрицательного переноса (противоположный биту переноса), знака, переполнени€ и K-флаг. ѕример приведен дл€ каждого случа€. ќбратите внимание, K-флаг устанавливаетс€ если ј меньше ¬, когда числа обрабатываютс€ как знаковые.

¬ходы

¬ыходы

ѕример

A7

B7

C6

C

B

S

V

K

Ўестнадцатеричное выражение

«наковое сравнение

0

1

0

0

1

0

0

0

0x50 - 0xf0 = 0x60

80 - -16 = 96

0

1

1

0

1

1

1

0

0x50 - 0xb0 = 0xa0

80 - -80 = -96

0

0

0

0

1

1

0

1

0x50 - 0x70 = 0xe0

80 - 112 = -32

0

0

1

1

0

0

0

0

0x50 - 0x30 = 0x120

80 - 48 = 32

1

1

0

0

1

1

0

1

0xd0 - 0xf0 = 0xe0

-48 - -16 = -32

1

1

1

1

0

0

0

0

0xd0 - 0xb0 = 0x120

-48 - -80 = 32

1

0

0

1

0

0

1

1

0xd0 - 0x70 = 0x160

-48 - 112 = 96

1

0

1

1

0

1

0

1

0xd0 - 0x30 = 0x1a0

-48 - 48 = -96

[6] ƒетальное объ€снение знакового сравнени€ даетс€ в статье Ѕрюса  ларка (Bruce Clark) Beyond 8-bit Unsigned Comparisons, раздел 5.

[7] Ќедопустимые опкоды микропроцессора 6502 детально рассматриваютс€ в статье How MOS 6502 Illegal Opcodes really work. ¬ модели 6502 результаты недопустимых опкодов непредсказуемы, поскольку логика микросхемы работает нестабильно, когда на входе неожиданные сигналы. Ќапротив, в модели 8085 не задокументированные опкоды подобно флагам введены намеренно.

[8]  лючевым параметром производительности ћќѕ-транзистора €вл€етс€ отношение ширины к длине затвора. √рубо говор€, ток транзисторов пропорционален этому отношению. (Ўирина Ц это ширина стока или истока, а длина Ц рассто€ние от истока к стоку, проход€щее через затвор). ƒл€ наилучшей производительности инвертора отношение ширины к длине нагрузочного транзистора должно приблизительно составл€ть 1/4 от отношени€ ширины к длине входного транзистора (—м. Introduction to VLSI Systems, Mead, Conway, стр. 8).  ак результат, нагрузочные транзисторы большие и массивные в сравнении с понижающими транзисторами. ≈ще одно следствие Ц у мощных транзисторов в супербуфере очень широкий затвор. ¬ блоке регистров микропроцессора 8085 имеютс€ некоторые транзисторы, где отношение ширины к длине подобрано очень тщательно, чтобы один из транзисторов был Ђведущимї в случае, если оба транзистора одновременно открыты. (»менно поэтому имитационна€ модель микропроцессора 8085 более сложна€, чем у модели 6502, поскольку необходимо учитывать размеры транзисторов).

[9] ќдним из последствий использовани€ динамических буферов проходного транзистора €вл€етс€ то, что если тактова€ частота слишком мала, с течением времени произойдет утечка зар€да и потер€ данных. ѕоэтому микропроцессор 8085 имеет минимальную тактовую частоту 500 к√÷. ћодель 6502 также имеет минимальную тактовую частоту. ћодель Z-80 напротив сделана на статической логике и не имеет минимальной тактовой частоты Ц тактовые импульсы можно замедл€ть настолько, насколько это необходимо.

или введите им€

CAPTCHA
—траницы: 1  2  
¬ластилин
20-04-2013 19:07:23
—тать€ интересна€. Ќо два вопроса : 1. ака€ ее практическа€ польза дл€ читател€ ? 2.  аким боком стать€ относитс€ к ит-безопасности ?
0 |
„охча
20-04-2013 22:41:41
—пасибо! ƒействительно очень глубоко и интересно. Ћишний раз подтверждает, что если копнуть прошивки и/или практически любые микроконтроллеры, не говор€ уж о ѕЋћ и прошивках - чего только не узнаешь..))
0 |
naprimer
21-04-2013 07:58:43
—ломал мозг и ожидал в конце увидеть раскрытие мирового заговора или, на худой случай, происхождени€ жизни.
0 |
bladegts
23-04-2013 12:04:50
naprimer € тоже ждал этого, какого хера эта бред€тина делает на этом сайте???
0 |
Fomalhaut
23-04-2013 22:00:07
√лупости не пишите: если вам это "бред€тина", то это только лишь ваше мнение, ничего более.
0 |
noname
29-04-2013 12:55:06
„то на этом сайте делают невоспитанные дилетанты, € бы так поставил вопрос. Ќе догон€ешь как это св€зано с безопасностью, тогда молча и учи мат.часть.
0 |
rem
23-04-2013 15:05:58
—пасибо, стать€ хороша€. Ќе думал, что даже в таких старых камн€х могут быть недокументированные особенности
0 |
KKML
25-04-2013 17:27:45
забыли про нефтепровод который пи++анул в —ибири из-за тех самых микропроцессоров? а сколько эти суки нам бэкдуров с компами зашивали? а в новых i7 - "случайные" числишки?
0 |
—траницы: 1  2