Архитектура компьютера. Цифровой логический уровень

Компьютер — это машина, которая может выполнять вычисления через исполнение примитивных операций. Она может понимать только два сигнала, которые принимаются за 0 и 1.

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

Организация компьютера состоит из 6 уровней: цифровой логический, микроархитектура, архитектура набора команд (ISA), операционная система, язык ассемблера, прикладной, конечно, если не считать физический уровень, который находится ниже цифрового логического уровня. У меня нет пока что в планах рассказывать все, что происходит выше уровня ISA. На это есть две причины: во-первых, цель этих статей заключается не в том, чтобы рассмотреть все уровни, а в том, чтобы показать, что из себя представляют уровни 0-2, и, во-вторых, на habr'е существует немало статей по уровням выше ISA и без меня. В этой статье будет показан цифровой логический уровень, а в следующих двух микроархитектура и архитектура набора команд соответственно.

Цифровой логический уровень


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

Вентиль


Вентиль (рис. 1.0) является устройством, которое принимает входные сигналы и выдает выходные, сам он реализован на транзисторах (об их работе я рассказывать не буду). Вентили используются на данном уровне как «строительный» материал, чтобы представлять базовые логические операции, а дальше уже идет их комбинирование для реализации тех или иных схем, то есть смысл данного уровня заключается в построении переиспользуемых схем, а не о работе вентилей (и транзисторов); дальше уже на основе этих схем могут быть построены более сложные и узкоспециализированные схемы, например, целые модули памяти, различная логика, например, для того как будут взаимодействовать компоненты CPU на уровне микроархитектуры и тд.

Рисунок 1.0. Изображение вентилей.



Таблица 1.0. Таблица истинности для основных операций.
A B И И-НЕ ИЛИ ИЛИ-НЕ ИСК-ИЛИ
0 0 0 1 0 1 0
0 1 0 1 1 0 1
1 0 0 1 1 0 1
1 1 1 0 1 0 0

Булева алгебра


Этот вид алгебры работает с 0 и 1, здесь присутствуют такие операции (табл. 1.0) как: И (конъюнкция), ИЛИ (дизъюнкция), НЕ (отрицание), ИСКЛЮЧАЮЩЕЕ ИЛИ и их комбинации и т.д. Чтобы описать логические функции можно использовать разные способы, но мы сконцентрируемся только на двух: таблица истинности и дизъюнктивно нормальная форма.

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

Минтерма представляет собой логическую функцию, которая принимает истинное значение только при одном наборе значений входящих в нее переменных, реализуется это за счет взятия И от всех переменных (с или без НЕ). Например !A&B&C (! — НЕ, & — И) принимает истинное значение только, когда A=0, B=C=1. Когда мы представим все истинные строки в виде минтерм, потребуется взять от всех минтерм ИЛИ (дизъюнкцию). Так вот теперь объединяя все выше сказанное мы можем реализовать функцию в виде схемы.

Например, давайте возьмем функцию ИСКЛЮЧАЮЩЕЕ ИЛИ (табл. 1.0). Мы видим, что у нее есть две истинные строки: при A=0, B=1 и A=1, B=0. Мы берем и представляем их как две минтермы, !A&B и A&!B. Действительно, первая минтерма равна 1 только в том случае, когда A=0, B=1; Другая только в том случае, когда A=1, B=0; Как раз таки у нас только такие строки в таблице истинности принимают истинные значения. Теперь когда у нас есть все необходимые минтермы, мы берем от всех минтерм операцию ИЛИ, то есть, (A&!B) | (!A&B). Мы взяли и представили функцию ИСКЛЮЧАЮЩЕЕ ИЛИ в виде формулы, которую можем легко представить в виде логической схемы (рис 1.1а), ведь она состоит из простых функций: двух И и одной ИЛИ. Было бы эффективней если бы мы сократили (рис. 1.1б) кол-во входов, для этого можно объединить A с !A в один вход A, только понадобится еще добавить между новым входом А и старым входом !A вентиль НЕ, чтобы входной сигнала для A был противоположным для старых A и !A; то же самое можем сделать с B и !B.

Рисунок 1.1. Схема ИСКЛЮЧАЮЩЕГО ИЛИ (черта над переменной обозначает НЕ).



Логические схемы


Логическая схема — это набор объединенных вентилей с входными и выходными сигналами. На рис 1.1 тоже изображена схема у которой входными сигналами являются A и B, выходной сигнал идет от операции ИЛИ; также у нее есть три вентиля: два И, один ИЛИ. Теперь давайте рассмотрим некоторые виды схем с которыми нам потребуется встречаться в дальнейшем, к ним относятся: комбинационные, арифметические, интегральные схемы.

Комбинационные схемы


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

Компаратор

Компаратор имеет n входных парных линий (то есть 2n входов) и одну выходную линию. Логика его работы заключается в том, чтобы сравнить каждую пару битов (биты слова A сравниваются с соответствующими битами слова B) и при неравенстве хоть одной из них выдать 0 (если за ложь принят 0), иначе 1. Давайте построим таблицу истинности (табл. 1.1) для однобитного компаратора; можно заметить, что она равна таблице истинности ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ (когда к операции добавлен НЕ, то все выходные значения в таблице становятся противоположными). Теперь давайте расширим его до двухбитного компаратора, построим таблицу истинности (табл. 1.2) для него от двух переменных значения которых зависит от двух однобитных компаратора, то есть от двух ИСКЛЮЧАЮЩЕГО ИЛИ-НЕ; в ней значение 1 в CMP0 (и CMP1) значит, что два входа какото-то компаратора равны, 0 наоборот, то есть 1 в столбце R должна быть только, когда значения равны в двух компараторах. Эта таблица истинности совпадает с таблицей И, то есть мы объединяем все ИСКЛЮЧАЮЩЕГО ИЛИ-НЕ операцией И и у нас получится двухбитный компаратор (рис. 1.3а). Для дальнейшего расширение компаратора необходимо лишь добавить ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ и подсоединить его к И. Недостаток такой реализации заключается в ее избыточности, нам требуется добавлять вентили НЕ для каждого ИСКЛЮЧАЮЩЕГО ИЛИ; мы можем от этого избавится (рис. 1.3б), если заменим вентиль И с НЕ входами на ИЛИ-НЕ, так как их таблицы истинности совпадают.

Таблица. 1.1. Таблица истинности для однобитного компаратора.
A B CMP
0 0 1
0 1 0
1 0 0
1 1 1

Таблица. 1.2. Таблица истинности для двухбитного компаратора.
CMP0 CMP1 R
0 0 0
0 1 0
1 0 0
1 1 1

Рисунок 1.3. Две схемы двухбитных компараторов.



Декодер

Декодер обладает n входными линиями, 2^n выходными, он реализован так, чтобы сигнал (истинна, 1) прошел только в одну выходную линию. Каждый выходной вентиль И получает свою комбинацию значений переменных, которые (значения) находятся в какой-то строке таблицы истинности, а как мы уже знаем, строку таблицы истинности можно реализовать как минтерму, то есть мы каждую строку представляем как вентиль И (рис. 1.4) от нескольких переменных. Основное применение декодера заключается в выборочном включении разных частей схемы (или схем), например, у АЛУ (о нем далее) имеется несколько операции, которые он может выполнять над входными значениями, чтобы их выбрать одну из них используется декодер.

Рисунок 1.4 Декодер.



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

Мультиплексор обладает 2^n входными линиями, n линиями управления и одной выходной линией. Он в реализации в какой-то степени похож (рис 1.5) на декодер, если представить входы декодера как линии управления, дополнить каждый вентиль И дополнительным входным сигналом и объединить выходные значения всех И одним ИЛИ. Суть его работы заключается в том, чтобы на выход поступал сигнал только от одной из возможных входных линий. Мультиплексор применяется в разных целях, например, он может пригодиться для преобразования параллельного кода в последовательный. Допустим у нас есть параллельная (это значит, что линии работают одновременно) шина с несколькими линиями по которым параллельно передаются биты; чтобы считать нужное нам слово (обычно разрядность слова соответствует разрядности регистра в процессоре) мы соединяем линий шины с входами мультиплексора и последовательно включаем по одному входу, допустим сверху вниз, тем самым на выход у нас пойдет точная последовательность битов.

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

Рисунок 1.5. Мультиплексор.



Арифметические схема


Данный вид схем выполняет арифметические операции над входными сигналами. Основными схемами являются: логические функции, сумматор, схема сдвига, АЛУ (ALU, Arithmetic Logic Unit).

Полусумматор и полный сумматор

Полусумматор состоит из двух входных и двух выходных линий, Полусумматор является простой схемой (рис. 1.6) из двух вентилей: И и ИСКЛЮЧАЮЩЕЕ ИЛИ. Сам по себе полусумматор может складывать только одноразрядные значения, но зачем же тогда нам нужен полный сумматор? В основном мы хотим складывать значения с большей разрядностью, но только одним полусумматором мы удовлетворить это желание не может. Когда мы складываем два одноразрядных значения, то у нас может произойти переполнение (табл. 1.3 последняя строка истинности в столбике перенос). Это когда результат операции не помещается в той разрядности, которой обладают входные элементы (в данном случае 1). При сложении двух единиц получает двойка, которую нельзя сохранить в одном бите, поэтому необходимо перенести его, чтобы воспользоваться при дальнейших вычислениях, но так как в полусумматоре не предусмотрена возможность использования двух значений и переноса одновременно, то складывать значения с разрядностью более чем единицу не получится. Например, допустим мы складываем два 3-разрядных числа, 5 (101 в двоичной) и 7 (111 в двоичной), сложение двух чисел начинается с младших разрядов, на входы полусумматора направляются 1 и 1, на выходе суммы получаем 0 и на выходе переноса 1, вот здесь и возникает проблема, следующие значения, которые должны пойти в полусумматор, это 0 и 1 соответственно, но, что делать с переносом, ведь для него нет никакого свободного входа, а отбросить его нельзя, поэтому полусумматоры не могут напрямую использоваться для сложений.

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

Рисунок 1.6. Схема полусумматор.



Таблица 1.3. Таблица истинности полусумматора.
A B Сумма Перенос
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Рисунок 1.7. Схема полного сумматора.



Таблица 1.4. Таблица истинности полного сумматора.
A B Вход перенос Сумма Выход перенос
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Схема сдвига

Сдвиг необходим для того, чтобы, например, выполнять умножение (сдвиг влево) и деление (сдвиг вправо), но только с числами, которые являются степенью двойки (1, 2, 4, 8 и тд). Схема сдвига (рис. 1.8) должна выполнять смещение на одну позицию влево или вправо в зависимости от бита направления. Бит направления (С) в зависимости от своего значения включает те или иные вентили И. Если он равен 0 (сдвиг влево), то сигнал который идет напрямую (то есть не проходит через НЕ) будет выключать вентиль который находятся выше в паре из двух вентилей И и один крайний вентиль И снизу. Сигнал, который проходит через НЕ, будет включать нижние вентиль в паре из двух вентилей И и один крайний вентиль И сверху. Это значит, что входные значения In будут выходить только из вентилей И выходные сигналы, которых направлены в нижнюю сторону; старший бит (I3) будет утерян, так как самый нижний вентиль И не пропустит входной сигнал дальше. Аналогичная ситуация происходит, когда бит направления равен 1 (сдвиг вправо), только теперь будут включены другие вентили И и сигнал уже будет направлен в противоположную (в данной реализации) сторону, и, следовательно, произойдет сдвиг вправо.

Рисунок 1.8. Схема сдвига.



Арифметико Логическое Устройство

АЛУ — это схема (рис. 1.9), которая содержит в себе множество арифметических схем, она предназначена для того, чтобы в одном месте хранить все операции необходимые для какой-либо цели. Реализация АЛУ разделяется на несколько частей (в данной реализации): распространение входных операндов, логические функции, сумматор и мультиплексор. Как мы помним декодер должен выполнять«включение» операций, но здесь я решил сделать мультиплексор, который подает на выход «Результат» значение, только одной из четырех операций; два нижних вентиля И в нем делят одну и ту же комбинацию при которой мультиплексор работает, это необходимо потому, что «Выход переноса» и «Сумма» сумматора являются частью одной операции, то есть оба этих входа должны работать только когда выбрано суммирование. Наш АЛУ предназначен для работы с одноразрядными значениями, но его можно почти без проблем изменить на большую разрядность. Входные линии INA и INB предназначены для включения/выключения A и B соответственно.

Рисунок 1.9. Схема АЛУ.



Интегральные схемы


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

Есть куча разных видов корпусов, но мы рассмотрим наиболее известные:

  • Dual Inline Package (DIP) представляет собой корпус (рис. 2.0а) у которого выводы (входные и выходные сигналы) расположены с двух сторон параллельных друг другу, кол-во выводов в данном корпусе варьируется в пределах от 14 до 68 (только четное кол-во). Данный корпус используется при небольших и/или дешевых схемах.
  • Pin Grid Array (PGA) обладает выводами со всех четырех сторон (рис. 2.0б).
  • Land Grid Array (LGA) обладает выводами в виде контактов по всей (зависит от стандарта) площадке (нижняя часть) корпуса. LGA (рис. 2.0в) обладает одним важным преимуществом перед другими корпусами: большое кол-во выводов, что особенно важно для таких микросхем как процессоры. Замечу, что процессор не тоже, что и CPU, процессоры это любая микросхема, которая производит вычисления, CPU же состоит из микроархитектуры, в частности АЛУ и блока управления (control block).

Рисунок 2.0a, б, в. Виды корпусов.



Память


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

Рисунок 2.1. SR защелка.



Прежде чем использовать защелку, ее необходимо инициализировать. Инициализировать значит перевести ее в такое состояние, когда Q != !Q, это необходимо для того, чтобы защелка могла корректно работать, то есть корректно менять свое состояние (Q) между 0 и 1. Для инициализации нам необходимо подать на S и R такие значения при которых защелка перейдет в непротиворечивое состояние (Q != !Q); когда защелка только начинает работать, то в Q и !Q могут быть любые неизвестные нам значения, поэтому значения S и R не должны зависеть от значений в Q и !Q. Другими словами, нам нужны такие значения S и R при которых мы получим в Q и !Q противоположные значения.

Рассматривать последовательность действий можно по-разному: мы можем предположить, что на S сигнал поступает быстрее, чем на R и тогда верхний вентиль повлияет на результат работы нижнего; или наоборот, сигнал до R дойдет быстрее, но это не важно, результаты будут одинаковы. В нашем примере я буду предполагать, что сигнал S приходит быстрее, а что же дальше? Какое второе значение будет у верхнего вентиля? Как было сказано выше, мы не должны делать предположений о значении Q (или !Q), поэтому мы должны рассматривать обе ситуации: Q=0 и Q=1. Теперь все, что нам остается, так это проверить все (табл. 1.6) комбинации S, R и Q.

Таблица 1.6. Таблица истинности SR защелки.
S R Q !Q новое Q новое Q != !Q Q == новое Q
0 0 0 1 0 1 1
0 0 1 0 1 1 1
0 1 0 1 0 1 1
0 1 1 0 0 0 0
1 0 0 0 1 1 0
1 0 1 0 1 1 1
1 1 0 0 0 0 1
1 1 1 0 0 0 0

Для SR защелки построенной на основе ИЛИ-НЕ (рис. 2.1) значения для S и R будут равны 0 и 0, соответственно, потому, что значения в столбцах «новое Q != !Q» и «Q == новое Q» должны быть истинны сразу для Q=0 и Q=1. Например, при S=0, R=1, в случае с Q=0 все в порядке, но при Q=1 у нас меняется состояние Q c 1 на 0, а этого быть не должно так как, тогда без нашего ведома защелка поменяет состояние. Точно также можно построить SR защелку (и другие) на основе И-НЕ, только инициализировать значения S и R придется 1 и 1, соответственно. Давайте рассмотрим, как происходит инициализация со значениями в Q=0 и Q=1.

Когда мы подаем на входы S, R сигналы 0, а в Q хранится значение 0, то в верхний вентиль ИЛИ НЕ поступают два нуля 0, на выходе у него будет 1 (табл. 1.0). Далее в нижний вентиль ИЛИ-НЕ поступают 0 и 1, на выходе будет 0; то есть у нас получилось не противоречивое состояние защелки (рис. 2.2a). В данном случае выходное значение защелки равно 0 (Q), то есть она хранит значение 0.

В ином варианте мы можем подать на входы S, R сигналы 0, а в Q хранится значение 1. В верхний вентиль ИЛИ-НЕ поступают 0 и 1, что на выходе дает 0. В нижний вентиль ИЛИ-НЕ поступают 0 и 0, на выходе будет 1; Снова мы попали в не противоречивое состояние защелки (рис. 2.2б). Выходное значение защелки равно 1.

Рисунок 2.2. Два возможных корректных состояния SR защелки.

Поделиться публикацией

Комментарии 19

    +5
    один транзистор для НЕ, два транзистора для И-НЕ и ИЛИ-НЕ
    Схемы в студию! А то разработчики всего мира не в курсе, как уменьшить количество используемых транзисторов вдвое.

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

    процессоры это, любая микросхема, которая производит вычисления, CPU же состоит из микроархитектуры,
    А вы точно понимаете, о чем пишете?
      –2
      amartology
      1. НЕ, НЕ-И, НЕ-ИЛИ, соответственно.
      image

      2. Хорошо, да, для оптимизации применяются разного рода, исключения.
      3. Что именно не так?
        +3
        Такие схемы в последний раз в составе интегральных схем применялись лет за двадцать до вашего рождения. И даже тогда настоящие, а не учебные вентили на биполярных транзисторах выглядели совсем по-другому. Например, вот так:
        image
        А сейчас 99.99% цифровых микросхем и вовсе делается на КМОП-логике.

        Комментарий по второму пункту тоже интересует, кстати.
          0
          Вы попросили привести пример, я привел. Я разве говорил, что это не учебный материал?
            +3
            Смотрите, фраза «сейчас на данном уровне используются только вентили НЕ, И-НЕ и ИЛИ-НЕ потому, что: их построение обходится дёшево (один транзистор для НЕ, два транзистора для И-НЕ и ИЛИ-НЕ» является неправдой несколько раз:
            1) используются не только вентили, но и готовые элементы памяти, триггеры, сумматоры.
            2) не только такие вентили, но еще и вентили log0, log1, XOR, XNOR, композитные вентили и многовходовые вентили.
            3) не потому, что их построение обходится дешево.
            4) не один транзистор на инвертор и не два транзистора на ИНЕ/ИЛИНЕ.
            Отдельно хотелось бы проехаться по вашей пунктуации: только в процитированном кусочке два знака препинания стоят неправильно.

            3. Что именно не так?
            То, что вы сейчас пытаетесь аудитории, которая в среднем понимает в вопросе гораздо больше вас, рассказывать выдержки из учебника сорокалетней давности, и еще упорствуете, когда вам указывают на явную фигню в тексте. Начать стоило хотя бы с чтения более современного учебника, например Харрис и Харриса.
              0
              Харис & Харис хорошая книженция. Как раз можно сразу по прочтению сделать свой однотактовый процессор на FPGA за пару вечеров.
              +2

              Ну, вам следовало в таком случае явно указать — "здесь и далее речь пойдет про РТЛ/ДТЛ". Тогда и возражений не было бы, кроме того, что непонятно зачем тут про такое писать

            +3
            Не подскажете, какой массовый современный процессор выпускается по такой схемотехнике? В КМОП-логике (а других вариантов уже несколько десятилетий нет — только если для военных или космоса что-то на нарисованных вами биполярных транзисторах делают) те же НЕ и И-НЕ выглядит совершенно иначе:
            image image
              +1
              Военные не дураки и тоже любят современные технологии. Использовать проверенные решения они любят больше, но все не так плохо, как вы могли бы подумать.
          0
          Прежде чем использовать защелку, ее необходимо инициализировать. Инициализировать значит перевести ее в такое состояние, когда Q != !Q, это необходимо для того, чтобы защелка могла корректно работать, то есть корректно менять свое состояние (Q) между 0 и 1. Для инициализации нам необходимо подать на S и R такие значения при которых защелка перейдет в непротиворечивое состояние (Q != !Q); когда защелка только начинает работать, то в Q и !Q могут быть любые неизвестные нам значения, поэтому значения S и R не должны зависеть от значений в Q и !Q. Другими словами, нам нужны такие значения S и R при которых мы получим в Q и !Q противоположные значения.

          Первый раз слышу, чтобы триггер надо было инициализировать.
            +2
            Это очень плохо, потому что на самом деле надо, чтобы из метастабильного состояния перейти в детерминированное. Излияния автора этой статьи имеют мало общего с действительностью, но вот хороший пост на Хабре на эту тему.
            0
            ---Она может понимать только два сигнала, которые принимаются за 0 и 1.

            А что делать с компьютерами что понимают 3 уровня сигнала — типа Сетунь?
              0
              Я вообще хотел бы узнать про кого это — кто это она?
              И что означает слово «понимает»?
                0
                «Компьютер — это машина, которая может выполнять вычисления через исполнение примитивных операций. Она может понимать только два сигнала, которые принимаются за 0 и 1. „

                Вы точно прочитали хотя бы первый абзац?
                Или вы не тому ответили?
                  +1
                  Прочитал, и на нем меня заклинило. Вот печатаю сейчас на компьютере и никак в толк не могу понять как же я это делаю если он (компьютер) понимает только 1 и 0.

                  Но вопрос был не к вам а скорее в добавок к вашему.

                  Сетунь — так это удар поддых — тут и с двоичными вычислениями некоторое количество ошибок… Трудно представить как усугубится ситуация, если автор еще и троичное исчисление попробует начать объяснять (если сможет понять).
              +3
              Какой сумбур и каша.

              Я вообще где? На техническом ресурсе или в блоге школьника пишущего реферат по информатике?
                +2
                Судя по дате рождения автора, он уже студент. Возможно даже не первого курса. Это, впрочем, делает ситуацию несколько печальнее, чем если бы он был школьником — как минимум потому, что шанса прокачать пунктуацию уже не будет.
                0
                Также известна как микросхема, эта те же схемы показанные выше, только они помещена в корпус, который определяет, то где должны находится выводы для сигналов. Этот вид схем возник из-за того, что продавать отдельные схемы и вентили не очень целесообразно: по крайне мере из-за того, что нет стандарта, который бы говорит как, где и в каком кол-ве должны располагаться входные и выходные сигналы.

                Нет, дело все же в быстродействии и миниатюризации, а не в целесообразности продажи отдельных компонентов. К тому же, «отдельные» схемы и по сей день отлично продаются
                  +1
                  Очень слабая статья. Лучше читайте «Код тайный язык информатики»

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

                  Самое читаемое