Какое устройство компьютера выполняет арифметические преобразования информации
2. Микропроцессор как основа персональной информатики, общая схема, принцип функционирования
Микропроцессор - центральное устройство (или комплекс устройств) ЭВМ (или вычислительной системы), которое выполняет арифметические и логические операции, заданные программой преобразования информации, управляет вычислительным процессом и координирует работу устройств системы (запоминающих, сортировальных, ввода — вывода, подготовки данных и др.). В вычислительной системе может быть несколько параллельно работающих процессоров; такие системы называют многопроцессорными. Наличие нескольких процессоров ускоряет выполнение одной большой или нескольких (в том числе взаимосвязанных) программ. Основными характеристиками микропроцессора являются быстродействие и разрядность. Быстродействие - это число выполняемых операций в секунду. Разрядность характеризует объём информации, который микропроцессор обрабатывает за одну операцию: 32-разрядный процессор за одну операцию обрабатывает 32 бит информации, 64-разрядный - 64 бита. Скорость работы микропроцессора во многом определяет быстродействие компьютера. Он выполняет всю обработку данных, поступающих в компьютер и хранящихся в его памяти, под управлением программы, также хранящейся в памяти. Персональные компьютеры оснащают центральными процессорами различных мощностей. Основные функции которых обработка данных по заданной программе путем выполнения арифметических и логических операций и программное управление работой устройств компьютера.
Устройство управления (УУ). Осуществляет координацию работы всех остальных устройств, выполняет функции управления устройствами, управляет вычислениями в компьютере.
Арифметико-логическое устройство (АЛУ). Так называется устройство для целочисленных операций. Арифметические операции, такие как сложение, умножение и деление, а также логические операции (OR, AND, ASL, ROL и др.) обрабатываются при помощи АЛУ. Эти операции составляют подавляющее большинство программного кода в большинстве программ. Все операции в АЛУ производятся в регистрах - специально отведенных ячейках АЛУ. В процессоре может быть несколько АЛУ. Каждое способно исполнять арифметические или логические операции независимо от других, что позволяет выполнять несколько операций одновременно. Арифметико-логическое устройство выполняет арифметические и логические действия. Логические операции делятся на две простые операции: "Да" и "Нет" ("1" и "0"). Обычно эти два устройства выделяются чисто условно, конструктивно они не разделены.
AGU (Address Generation Unit) - устройство генерации адресов. Это устройство не менее важное, чем АЛУ, т.к. оно отвечает за корректную адресацию при загрузке или сохранении данных. Абсолютная адресация в программах используется только в редких исключениях. Как только берутся массивы данных, в программном коде используется косвенная адресация, заставляющая работать AGU.
Математический сопроцессор (FPU). Процессор может содержать несколько математических сопроцессоров. Каждый из них способен выполнять, по меньшей мере, одну операцию с плавающей точкой независимо от того, что делают другие АЛУ. Метод конвейерной обработки данных позволяет одному математическому сопроцессору выполнять несколько операций одновременно. Сопроцессор поддерживает высокоточные вычисления как целочисленные, так и с плавающей точкой и, кроме того, содержит набор полезных констант, ускоряющих вычисления. Сопроцессор работает параллельно с центральным процессором, обеспечивая, таким образом, высокую производительность. Система выполняет команды сопроцессора в том порядке, в котором они появляются в потоке. Математический сопроцессор персонального компьютера IBM PC позволяет ему выполнять скоростные арифметические и логарифмические операции, а также тригонометрические функции с высокой точностью.
Кэш-память . Особая высокоскоростная память процессора. Кэш используется в качестве буфера для ускорения обмена данными между процессором и оперативной памятью, а также для хранения копий инструкций и данных, которые недавно использовались процессором. Значения из кэш-памяти извлекаются напрямую, без обращения к основной памяти. При изучении особенностей работы программ было обнаружено, что они обращаются к тем или иным областям памяти с различной частотой, а именно: ячейки памяти, к которым программа обращалась недавно, скорее всего, будут использованы вновь. Предположим, что микропроцессор способен хранить копии этих инструкций в своей локальной памяти. В этом случае процессор сможет каждый раз использовать копию этих инструкций на протяжении всего цикла. Доступ к памяти понадобиться в самом начале. Для хранения этих инструкций необходим совсем небольшой объём памяти. Если инструкции в процессор поступают достаточно быстро, то микропроцессор не будет тратить время на ожидание. Таким образом экономиться время на выполнение инструкций. Но для самых быстродействующих микропроцессоров этого недостаточно. Решение данной проблемы заключается в улучшении организации памяти. Память внутри микропроцессора может работать со скоростью самого процессора.
Кэш первого уровня (L1 cache). Кэш-память, находящаяся внутри процессора. Она быстрее всех остальных типов памяти, но меньше по объёму. Хранит совсем недавно использованную информацию, которая может быть использована при выполнении коротких программных циклов.
Кэш второго уровня (L2 cache). Также находится внутри процессора. Информация, хранящаяся в ней, используется реже, чем информация, хранящаяся в кэш-памяти первого уровня, но зато по объёму памяти он больше. Также в настоящее время в процессорах используется кэш третьего уровня.
Основная память. Намного больше по объёму, чем кэш-память, и значительно менее быстродействующая.
Многоуровневая кэш-память позволяет снизить требования наиболее производительных микропроцессоров к быстродействию основной динамической памяти. Кэш-память, как известно, может достаточно сильно влиять на производительность процессора в зависимости от типа исполняемых операций, однако ее увеличение вовсе не обязательно принесет увеличение общей производительности работы процессора. Все зависит от того, насколько приложение оптимизировано под данную структуру и использует кэш, а также от того, помещаются ли различные сегменты программы в кэш целиком или кусками.
Шина - это канал пересылки данных, используемый совместно различными блоками системы. Шина может представлять собой набор проводящих линий в печатной плате, провода, припаянные к выводам разъемов, в которые вставляются печатные платы, либо плоский кабель. Информация передается по шине в виде групп битов. В состав шины для каждого бита слова может быть предусмотрена отдельная линия (параллельная шина), или все биты слова могут последовательно во времени использовать одну линию (последовательная шина). К шине может быть подключено много приемных устройств - получателей. Обычно данные на шине предназначаются только для одного из них. Сочетание управляющих и адресных сигналов, определяет для кого именно. Управляющая логика возбуждает специальные стробирующие сигналы, чтобы указать получателю, когда ему следует принимать данные. Получатели и отправители могут быть однонаправленными и двунаправленными. Различают несколько типов шин.
Шина данных. Служит для пересылки данных между процессором и памятью или процессором и устройствами ввода-вывода. Эти данные могут представлять собой как команды микропроцессора, так и информацию, которую он посылает в порты ввода-вывода или принимает оттуда.
Шина адресов . Используется ЦП для выбора требуемой ячейки памяти или устройства ввода-вывода путем установки на шине конкретного адреса, соответствующего одной из ячеек памяти или одного из элементов ввода-вывода, входящих в систему.
Шина управления . По ней передаются управляющие сигналы, предназначенные памяти и устройствам ввода-вывода. Эти сигналы указывают направление передачи данных (в процессор или из него).
BTB (Branch Target Buffer) - буфер целей ветвления . В этой таблице находятся все адреса, куда будет или может быть сделан переход. Процессоры Athlon еще используют таблицу истории ветвлений (BHT - Branch History Table), которая содержит адреса, по которым уже осуществлялись ветвления.
Регистры - это внутренняя память процессора. Представляют собой ряд специализированных дополнительных ячеек памяти, а также внутренние носители информации микропроцессора. Регистр является устройством временного хранения данных, числа или команды и используется с целью облегчения арифметических, логических и пересылочных операций. Над содержимым некоторых регистров специальные электронные схемы могут выполнять некоторые манипуляции. Например, "вырезать" отдельные части команды для последующего их использования или выполнять определенные арифметические операции над числами. Основным элементом регистра является электронная схема, называемая триггером, которая способна хранить одну двоичную цифру. Регистр представляет собой совокупность триггеров, связанных друг с другом определённым образом общей системой управления. Существует несколько типов регистров, отличающихся видом выполняемых операций.
Некоторые важные регистры имеют свои названия, например:
сумматор — регистр АЛУ, участвующий в выполнении каждой операции.
счетчик команд — регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды; служит для автоматической выборки программы из последовательных ячеек памяти.
регистр команд — регистр УУ для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные — для хранения кодов адресов операндов.
Архитектура микропроцессора – принцип его внутренней организации, общая структура, конкретная логическая структура отдельных устройств. Понятие архитектуры микропроцессора включает в себя систему команд и способы адресации, возможность совмещения выполнения команд во времени, наличие дополнительных устройств в составе микропроцессора, принципы и режимы его работы. Выделяют понятия микроархитектуры и макроархитектуры.
Микроархитектура микропроцессора - это аппаратная организация и логическая структура микропроцессора, регистры, управляющие схемы, арифметико-логические устройства, запоминающие устройства и связывающие их информационные магистрали.
Макроархитектура микропроцессора - это система команд, типы обрабатываемых данных, режимы адресации и принципы работы микропроцессора.
В общем случае под архитектурой ЭВМ понимается абстрактное представление машины в терминах основных функциональных модулей, языка ЭВМ, структуры данных.
В соответствии с архитектурными особенностями, определяющими свойства системы команд, различают:
Микропроцессоры с CISC архитектурой - Компьютер со сложной системой команд. Исторически они первые и включают большое количество команд. Все микропроцессоры корпораций Intel (Integrated Electronics) и AMD (Advanced Micro Devices) относятся к категории CISC. Для ускорения работы CISC процессоров применяется набор дополнительных инструкций (Instruction Set). Естественно только при условии поддержки данных наборов со стороны приложения. Все традиционные современные процессоры поддерживают набор инструкций MMX, который был самым первым (разработан корпорацией Intel еще в 1997 году). MMX расшифровывается как MultiMedia eXtensions (мультимедийные расширения). Он представил дополнительные возможности, ориентированные на обработку цифрового изображения и звука. В основе технологии лежит концепция (микроархитектура) SIMD (Single Instruction Many Data – "одна команда, много данных"), когда при помощи одной инструкции одновременно обрабатывается несколько элементов данных. SSE, SSE2, 3DNow! - дальнейшее развитие этой идеи. Микропроцессоры Intel Pentium 3 поддерживают SSE, а Pentium 4 и AMD Athlon 64 еще и SSE2 (это относится и к соответствующим микропроцессорам Intel Celeron). Процессоры AMD Athlon и Duron поддерживают наборы инструкций 3DNow!Professional и MMX, в Athlon XP была добавлена поддержка SSE (на уровне микрокода ядра).
Микропроцессоры с RISC архитектурой - Компьютер с сокращенной системой команд. Упрощена система команд и сокращена до такой степени, что каждая инструкция выполняется за единственный такт. Вследствие этого упростилась структура микропроцессора, и увеличилось его быстродействие. Все команды работают с операндами и имеют одинаковый формат. Обращение к памяти выполняется с помощью специальных команд загрузки регистра и записи. Простота структуры и небольшой набор команд позволяет реализовать полностью их аппаратное выполнение и эффективный конвейер при небольшом объёме оборудования. Арифметику RISC - процессоров отличает высокая степень дробления конвейера. Этот прием позволяет увеличить тактовую частоту ( значит, и производительность ) компьютера; чем более элементарные действия выполняются в каждой фазе работы конвейера, тем выше частота его работы. RISC - процессоры с самого начала ориентированны на реализацию всех возможностей ускорения арифметических операций, поэтому их конвейеры обладают значительно более высоким быстродействием, чем в CISC - процессорах. В результате чего, RISC - процессоры в 2 - 4 раза быстрее имеющих ту же тактовую частоту CISC - процессоров с обычной системой команд и высоко производительней, несмотря на больший объем программ, на ( 30 % ). Дейв
Команды передачи данных (перепись), копирующие информацию из одного места в другое.
Арифметические операции, к которым в основном относят операции сложения и вычитания. Умножение и деление обычно реализуется с помощью специальных программ.
Логические операции, позволяющие компьютеру производить анализ получаемой информации. Простейшими примерами команд рассматриваемой группы могут служить сравнение, а также известные логические операции и, или, не.
Сдвиги двоичного кода влево и вправо. В некоторых случаях сдвиги используются для реализации умножения и деления.
Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.
Команды управления, реализующие нелинейные алгоритмы. Сюда относят условный и безусловный переходы, а также команды обращения к подпрограмме (переход с возвратом). Часто к этой группе относят операции по управлению процессором типа останов или нет операции.
Любая команда ЭВМ обычно состоит из двух частей – операционной и адресной. Операционная часть называемая также кодом операции указывает, какое действие необходимо выполнить с информацией. Операционная часть имеется у любой команды. Адресная часть описывает, где используемая информация хранится и куда поместить результат. В некоторых командах управления работой машины адресная часть может отсутствовать.
Код операции можно представить себе как некоторый условный номер в общем списке команд. В основном этот список построен в соответствии с определенными внутренними закономерностями.
Адресная часть обладает значительно большим разнообразием. Основу адресной части составляет операнд. В зависимости от количества возможных операндов команды могут быть одно- и двухадресные. В двухадресных командах результат записывается либо в специальный регистр (сумматор), либо вместо одного из операндов.
Способы адресации данных
Способы (или методы) адресации не что иное, как способы указания на те или иные ячейки памяти, с которыми должен манипулировать оператор. Существует много различных методов адресации. Количество их зависит от типа процессора. Наличие большого количества способов адресации обеспечивает высокую гибкость в построении программ и является большим преимуществом системы команд данного типа ЭВМ. Способы адресации практически одинаковы для всех команд, в которых присутствуют операнды. Рассмотрим три основные способа адресации данных.
Регистровая адресация. При этом способе операндом является один из регистров общего назначения. Число хранится непосредственно в регистре. Записывается как Rn, где n – номер регистра.
Косвенная адресация. При этом способе адресации в одном из регистров общего назначения содержится не само число, с которым нужно работать, а его адрес, то есть номер ячейки памяти, в котором число находится. Записывается как (Rn), где n – номер регистра.
Автоинкрементная адресация. Этот вид адресации несколько сложнее двух предыдущих. Помимо основного действия (косвенного обращения к ячейке памяти), при использовании этого метода, происходит еще изменение адреса этого обращения. В данном случае увеличивается указатель адреса ячейки памяти, к которой мы обращаемся, то есть содержимое регистра, служащего указателем адреса. Данное увеличение происходит автоматически, без какой-либо команды. Записывается эта адресация как (Rn)+. То, что знак + стоит после имени регистра, намекает на порядок выполнения команды: сначала происходит операция с ячейкой, на которую указывает адрес помещенный в регистр Rn, а потом уже содержимое регистра увеличивается на 2 (если оператор работает со словом, то переход к адресу следующего слова), или на 1 (если оператор работает с байтом, переход к адресу следующего байта). Данный способ адресации применяется для работы с массивами и при использовании стека (например, при использовании подпрограмм).
1. Тактовая частота (Частота ядра) (Internal clock) – это количество электрических импульсов в секунду.
2. Объем Кэш-памяти (Cache) – Кэш-память быстрая память, используемая процессором для ускорения операций, требующих обращения к памяти. На общую производительность влияет размер кэша L2. Чем больше L2, тем дороже процессор, т.к. память для кэша еще очень дорога.
3.Разрядность – максимальное количество разрядов двоичного кода, которые могут обрабатываться или передаваться одновременно (32 или 64 бита обычно)
4. Быстродействие микpопpоцессоpа - это число элементаpных опеpаций, выполняемых микpопpоцессоpом в единицу вpемени (опеpации/секунда).
1. Напряжение питания микропроцессора – величина питающего напряжения микропроцессоров зависит от технологического процесса и от частоты ядра. Чем меньше кристалл и ниже частота, тем меньше напряжение питания. Напряжение питания современных микропроцессоров от 0,5 В до 3,5 В, чаще всего от 1,2 В до 1,75 В.
2. Ток ядра – у современных микропроцессоров ток, протекающий через ядро от 1 А до 90 А.
3. Потребляемая мощность – зависит от величины питающего напряжения и от частоты ядра. Чем меньше напряжение питания и частота, тем меньше потребляемая мощность. Мощность современных микропроцессоров от 1Вт до 120 Вт. Чаще всего в пределах 40-70 Вт.
Что такое АЛУ? Арифметико-логическое устройство, одна из составляющих процессора. В статье мы приглашаем вас узнать принципы его действия, историю создания, основные характеристики, выполняемые операции, существующие классификации АЛУ.
Определение понятия
Арифметико-логическое устройство - один из блоков процессора, управляемый УУ (устройством управления). Его предназначение: выполнение логических и арифметических преобразований над данными-операндами (аргументами операции, информацией, обрабатываемой программой). Разрядность операндов в данном случае - размер или длина машинного слова.
Современное многофункциональное АЛУ состоит сегодня из двух частей:
- Операционное устройство.
- Устройство управления. Проводит вторичную дешифрацию кодов команды, определяет операцию, выполняемую в арифметико-логическом устройстве.
Набор выполняемых операций
Важно знать, какие операции должно исполнять АЛУ для того, чтобы обладать функциональной полнотой. Как правило, хватает четырех:
- Обращение к памяти устройства для чтения или записи информации.
- Декремент/инкремент.
- Сравнение. Здесь реализуется возможность условного перехода.
- Остановка функционирования устройства.
Если мы обратимся к первым арифметико-логическим устройствам, то увидим, что количество выполняемых ими операций ограничивалось 16-ю. Современные АЛУ способны выполнять сотни! Кстати, число операций и сегодня является важнейшей характеристикой данных устройств.
Классификация АЛУ
Мы помним, арифметико-логическое устройство - устройство управления и операционное. Но не все современные и исторические АЛУ одинаковы. Далее мы приведем самые распространенные их классификации.
По способу представления информации:
- С плавающей запятой.
- С фиксированной запятой.
По способу действий с операндами:
- Параллельные. В этом случае операции над всеми разрядами выполняются АЛУ одновременно.
- Последовательные. В данном случае операции будут выполняться по очереди, последовательно над каждым из разрядов.
- Параллельно-последовательные. Слово данных здесь делится на слоги. Обработка информации в таком АЛУ (арифметико-логическом устройстве) ведется параллельно над разрядами слога и последовательно над самими слогами.
По применению систем исчисления:
- Двоичные.
- Двоично-десятичные.
- Восьмеричные.
- Шестнадцатиричные и проч.
По особенностям использования узлов и элементов:
- Блочные. Для выполнения отдельных арифметических операций в систему арифметико-логического устройства процессора вводят специальные блоки. Последние позволяют вести параллельно процессы обработки информации.
- Конвейерные. Чем отличаются АЛУ такого типа? Любая операция будет разбиваться на последовательность из микроопераций. Они выполняются за определенные такты (равные временные промежутки) на разных ступенях такого конвейера. Операция над потоком операндов, таким образом, выполняется каждый такт.
- Многофункциональные. Это универсальные АЛУ, которые способны исполнить множество операций в одном устройстве. Однако здесь требуется настройка на выполнение конкретной операции с помощью ее кода.
По временным характеристикам:
- Синхронные. В таких арифметико-логических устройствах компьютера каждая операция станет выполняться за один такт.
- Асинхронные. Соответственно, нетактируемые АЛУ. Обеспечивают высокую степень быстродействия, так как выполняются на комбинационных схемах.
По характеристике устройства управления:
- Имеющие микропрограммное управление.
- С жесткой логикой УУ.
Основные функции
Арифметико-логическое устройство является составной частью процессора компьютера. АЛУ будет выполнять следующие функции:
- Двоичной арифметики для информации в форматах с фиксированной точкой.
- Двоичной арифметики для информации в форматах с плавающей точкой.
- Арифметики двоично-десятичного представления сведений.
- Логические операции (арифметические и логические сдвиги).
- Пересылка информации.
- Работа с символьными данными.
- Работа с графической информацией.
Главные количественные характеристики
Составные части арифметико-логического устройства (ОУ и УУ) определяют количественные характеристики всей системы АЛУ. В частности, это следующее:
- Время выполнения одной операции.
- Скорость выполнения операций вообще.
- Число исполняемых операций.
- Точность предоставленной информации.
Главные качественные характеристики
Арифметико-логическое устройство (АЛУ) является составной частью процессора. Это определяет его важнейшие качественные характеристики:
- Структурные особенности системы АЛУ.
- Методики кодирования данных.
- Форматы представления информации - с плавающей или фиксированной точкой.
История возникновения
Создателем арифметико-логических устройств считается Джон фон Нейман, разработчик компьютеров ЭНИАК (электронных числовых вычислителей).
Уже в 1945 году им были опубликованы первые научные работы по своему стартовому изобретению - компьютеру EDVAC. В следующем году он уже работал вместе со своими коллегами над созданием такого устройства в Принстонском институте перспективных исследований.
Архитектура этого изобретения ("архитектура фон Неймана") в дальнейшем стала базой, прототипом архитектур и большей части последующих компьютеров. В своих работах ученый указывал на наличие устройств, которые, по его мнению, являются обязательными для каждого компьютера. Среди них было упомянуто АЛУ. Фон Нейман считал, что арифметико-логическое устройство необходимо, потому что позволяет выполнять системе математические базовые операции. Как то: сложение и вычитание, умножение и деление.
Внутреннее устройство АЛУ
Мы уже разобрали, что условно АЛУ можно разделить на две части:
- УУ (микропрограммное устройство). Задает последовательность команд и микрокоманд.
- ОУ. Здесь реализуется ранее заданная последовательность команд и микрокоманд. Операционные устройства, в свою очередь, разделяются по типу обрабатываемой информации, по способу обработки данных, логической структуре.
При этом условно состав АЛУ также подвергается следующей градации:
- Регистры. Служат для обработки данных, поступающих как из пассивной, так и из оперативной памяти.
- Логические команды. Служат для обработки слов по микрокомандам. Последние, естественно, будут поступать из УУ - устройства управления.
Сами микрокоманды делятся на две категории:
- Поступают от внешнего источника в АЛУ. Вызывают в арифметико-логическом устройстве преобразование информации.
- Генерируются в самом АЛУ. Оказывают свое влияние на микропрограммное устройство. Тем самым изменяют нормальный, стандартный порядок следования команд.
Функции регистров АЛУ
Чтобы иметь представление о работе АЛУ, нам нужно поближе познакомиться с функциями его регистров:
- Pr1. Это аккумулятор или аккумуляторы. Считается главным регистром устройства, в котором и образуется результат произведенных вычислений.
- Pr2, Pr3. Регистры операндов в зависимости от характера исполняемой операции - слагаемого, делителя, сомножителя и проч.
- Pr4. Это адресный регистр. Он запоминает (в иных случаях формирует) адреса операндов результата.
- Pr6. Некое количество индексных регистров. Их содержимое будет использоваться для формирования адресов.
- Pr7. Вспомогательные регистры. По желанию разработчика могут стать аккумуляторами, индексными или вовсе использоваться для сохранения промежуточных результатов вычисления.
Теперь предлагаем вам обратиться к конкретным алгоритмам работы АЛУ.
Операция сложения
Функционально арифметико-логическое устройство будет состоять из Регистра 1, Регистра 2, сумматора и схемы управления.
Теперь распишем арифметическую операцию по тактам:
- Значение операнда № 1, участвующего в операции сложения, поступает в Регистр 1 по кодовой шине.
- Значение операнда № 2, участвующего в операции сложения, поступает в Регистр 2 по кодовой шине.
- Соответственно, по кодовой шине инструкций в схему управления поступает инструкция по выполнению данной операции.
- Данные из регистров уходят в сумматор. Далее схема управления уже дает команду на выполнение сложения.
- Результат по произведенной операции уходит в Регистр 1.
- Результат операции арифметико-логического устройства далее поступает в результирующий блок.
Операция вычитания
Давайте рассмотрим выполнение еще одной простой арифметической операции:
- Значение операнда № 1, принимающего участие в операции вычитания, проходит в Регистр 1 по кодовой шине.
- Значение операнда № 2, принимающего участие в операции вычитания, проходит в Регистр 2 по кодовой шине.
- Инструкция по выполнению данного алгоритма выводится по кодовой шине инструкций к схеме управления.
- Происходит переформирование положительного числа в отрицательное схемой управления.
- Результат такого преобразования операнда идет далее в сумматор.
- Сумматор выполняет сложение данных чисел.
- Результат операции поступает в Регистр 1.
- Результат операции вычитания отправляется в результирующий блок.
Операции в устройстве
И еще одна тема напоследок. Мы должны помнить, что все операции,выполняемые в АЛУ, - логические. Их можно разделить на следующие категории:
- Индексной арифметики.
- Десятичной арифметики.
- Специальной арифметики.
- Двоичной арифметики для значений с фиксированной точкой.
- Двоичной, шестнадцатеричной арифметики для значений с плавающей точкой.
- Над алфавитно-цифровыми полями.
- Над логическими кодами.
Арифметико-логическое устройство - основная часть процессора любого компьютера. Было разработано еще в середине прошлого века прославленным фон Нейманом. Призвано исполнять простые арифметические и логические операции в компьютере. Сегодня существует большое количество разновидностей АЛУ, что видно из множества представленных классификаций данных устройств.
Центральным элементом любой ЭВМ является процессор. А центральным элементом любого процессора является АЛУ - арифметико-логическое устройство. Именно АЛУ, в конечном итоге, выполняет все, даже самые сложные, операции. Но, как и многое настоящие труженики, зачастую остается в тени славы, которая достается процессорам и ЭВМ.
Даже при изучении архитектуры процессоров АЛУ лишь изображают символом на функциональной схеме, не углубляясь в детали его устройства. АЛУ слишком низкоуровневое, что там может быть интересного. Между тем, интересного там много.
Давайте сегодня попробуем заглянуть внутрь одного из базовых кирпичиков процессоров. Я не буду рассматривать какую либо конкретную ЭВМ, конкретный процессор, конкретную микросхему. Я расскажу немного об АЛУ в общем и целом. Но мы обязательно заглянем внутрь этого хитрого устройства.
Статья не является учебником. Это не копия каких либо книг или учебников. Это не компиляция других источников и статей. Как и другие статьи канала, это мой личный опыт.
Что это вообще такое, АЛУ?
Разве собственно названия не достаточно для ответа на этот вопрос? Нет, недостаточно. АЛУ выполняет логические и арифметические операции, это правда. Но этого недостаточно для того, что бы перейти к более детальному рассмотрению его внутреннего устройства. Давайте начнем с самого простого
Соответствие математического выражения и функционального элемента АЛУ. Иллюстрация моя Соответствие математического выражения и функционального элемента АЛУ. Иллюстрация мояПри все простоте и тривиальности, я не сомневаюсь, что вы все это и так прекрасно знаете, иллюстрация показывает важные моменты. Во первых, операция (в данном случае, сложение) выполняется над двумя операндами. В математике операнды назывались бы переменными. Операндов может быть и больше, но этот случай приводится к последовательности операций над двумя операндами. Операнд может быть всего один, но это частный случай, например
Суть от этого не меняется. Операция это то, что делается. Операнды это то, над чем выполняется операция.
АЛУ это не процессор! Это один из многих узлов процессора. АЛУ ничего не знает о переменных и их адресах. Не обращается к памяти для выборки данных. АЛУ работает с входными сигналами (a, b, op, Ci) которые и являются для него данными, формируя на их основе выходные сигналы (y, Co).
АЛУ на функциональных схемах обозначается таким вот забавным, похожим на шорты, символом. Это историческое обозначение. На функциональных схемах показывают не переменные, и даже не операнды, а сигналы. Поэтому наши два операнда превратились в два сигнала, a и b .
Выполняемая операция теперь тоже сигнал, op . Мы должны обязательно передать этот сигнал в АЛУ, именно он определяет, что АЛУ будет делать с входными сигналами. На выходе, в результате выполнения заданной операции, будет сформирован сигнал y , это результат операции.
Но всё ли это? Нет, не все. Этого достаточно для выполнения логических операций ( почти всех), но арифметические операции порождают еще и понятия переноса и заема . На первый взгляд, это внутреннее дело АЛУ. Но на самом деле, перенос/заем могут быть и входным сигналом, и выходным. Чуть далее мы это увидим.
А значит, более точно будет вот так
Операция, в общем случае, выполняется над тройкой операндов. Результат операции представляется парой значений. Иллюстрация моя Операция, в общем случае, выполняется над тройкой операндов. Результат операции представляется парой значений. Иллюстрация мояЗдесь я показал современное изображение АЛУ. Перенос/заем обычно называется просто переносом и обозначается С (от carry - переносить). Не смотря на то, что для операции вычитания это будет заем. Ci это входной перенос (i - in), а Co выходной (o - out).
Немного о разрядности
Последовательное включение АЛУ для повышения разрядности. Иллюстрация моя Последовательное включение АЛУ для повышения разрядности. Иллюстрация мояЗдесь у нас два АЛУ, каждое из которых обрабатывает свою тетраду байта. При этом выходной сигнал переноса АЛУ младшей тетрады является выходным для АЛУ старшей тетрады. Без этого результат операции над байтом в целом был бы неверным.
То есть, переносы действительно являются не только внутренним делом АЛУ, даже в таком упрощенном случае. Разрядность сигнала переноса равна единице - это один бит. И он настолько важен, что для него предусмотрено место в слове состояния процессора. Но слово состояния процессора не тема сегодняшнего разговора.
Обратите внимание, что в некоторых процессорах в слове состояния есть дополнительный флаг межтетрадного переноса. Для нашего примера его легко реализовать с помощью сигнала Co АЛУ младшей тетрады.
В данном случае разрядность операндов/сигналов каждого АЛУ равна четырем. Я показал это на иллюстрации. Но, в общем случае, разрядность АЛУ может быть любой . В разумных пределах, конечно.
При этом даже одноразрядные АЛУ имеют практический смысл и практическое применение. На одноразрядном АЛУ можно построить последовательный процессор, который будет обрабатывать информацию бит за битом, последовательно.
Думаете, такие процессоры не имеют смысла и никогда не существовали? Ошибаетесь! Такие процессоры использовались, например, в настольных ЭВМ (программируемых калькуляторах) Wang. Я упоминал их в статье
Если вам и этого недостаточно, то посмотрите на однобитный процессор Motorola
Мы пока обошли стороной вопрос сигнала op . Это немного более сложный вопрос, так как операция может задаваться и кодом, и набором отдельных сигналов. Чуть далее мы рассмотрим это подробнее. Пока же будет достаточно точным говорить, что операция задается кодом. Соответственно, разрядность сигнала op определяется количеством различных операций, которые может выполнять АЛУ.
Обратите внимание, что разрядность кода операции никак не связана с разрядностью АЛУ !
Для данной статьи вопрос разрядности АЛУ не имеет большого значения. Ведь мы рассматриваем работу именно АЛУ, а не процессора, в котором оно используется.
Последовательное или параллельное?
Требуемую операцию можно выполнять для единицы данных (байт, слово, двойное слово, и т.д.) целиком, одновременно, параллельно, для всех ее разрядов (бит). Такие АЛУ называются параллельными . А можно выполнять операцию над каждым битом (группой бит) единицы информации по отдельности, друг за другом, последовательно. Такие АЛУ называются последовательными .
Но ведь последовательные АЛУ гораздо медленнее параллельных. Например, для байта, последовательное АЛУ потребует 8 циклов для выполнения операции вместо одного. Для чего вообще эти последовательные АЛУ нужны?
Например, последовательное АЛУ позволяет строить процессоры переменной разрядности, причем изменяемой "на лету", во время выполнения программы. И это может оказаться более важным, чем снижение быстродействия.
В реальном мире чистые последовательные и параллельные АЛУ (да и процессоры) не встречаются. Например, чуть ранее мы видели, как можно объединить два 4-х разрядных АЛУ. При этом обработка двух тетрад выполняется параллельно. Но ведь сигнал переноса не может быть обработан АЛУ старшей тетрады до тех пор, пока АЛУ младшей тетрады не закончит выполнение операции и не сформирует выходной сигнал переноса. Значит, для переносов обработка будет последовательной.
Статическое или динамическое (последовательностное)?
Во многих случаях выходные сигналы АЛУ напрямую определяются сигналами входными. То есть, АЛУ является комбинационным логическим элементом. Такое АЛУ и называется статическим.
Однако, последовательное АЛУ не может быть статическим. Обратите внимание, последовательное АЛУ не тождественно однобитному! Например, данные могут передаваться в АЛУ парами бит, всего 4 такта для байта. Такое АЛУ будет последовательным, но не однобитным. А выходной перенос, например, может формироваться лишь после обработки всей последовательности бит единицы информации.
Последовательное АЛУ для правильного формирования результата должно сохранять внутреннее состояние между тактами (шагами) выполнения операции. То есть, оно уже будет не комбинационным, а последовательностным логическим элементом. Такое АЛУ является динамическим.
Условные временные диаграммы работы статического (разрядность любая) и динамического АЛУ. Иллюстрация моя Условные временные диаграммы работы статического (разрядность любая) и динамического АЛУ. Иллюстрация мояВидно, что для статического АЛУ выходные сигналы появляются с некоторой задержкой относительно входных сигналов. А для динамического АЛУ все немного сложнее. Да, выходные сигналы по прежнему формируются с некоторой задержкой. Но операция теперь полностью выполняется за несколько тактов. Причем выходной перенос формируется уже после полного выполнения операции над всеми разрядами. Динамическому АЛУ нужен источник тактовых импульсов.
Еще раз обращаю ваше внимание, что речь идет именно об АЛУ, а не о процессорах.
В некоторых случаях на входах и выходе АЛУ, внутри АЛУ, имеются регистры-защелки для временного хранения обрабатываемой АЛУ информации. Например, это может потребоваться для процессоров с многофазной системой тактирования или процессоров с распараллеливанием выполнения команд.
Для выполнения операции в таких АЛУ требуется несколько шагов: запись данных в входные регистры, выдача кода операции, чтение выходного регистра. Такие АЛУ являются последовательностными, но не обязательно динамическими. Так как собственно операция может выполняться и параллельно.
Типы операций, набор операций
Поскольку устройство арифметико-логическое, разумно предположить, что оно выполняет логические и арифметические операции. При этом выполняемые операции зачастую просты, даже элементарны. А более сложные операции, которые можно разбить на несколько элементарных, выполняются уже процессором, на более высоком уровне. Это не обязательно так, но это самый распространенный случай.
Так же надо отметить, что информационные входы АЛУ (a и b) не обязательно равнозначны. Да и включение АЛУ в схему процессора в большинстве случаев не симметрично. Но это тема отдельного разговора.
Логические операции
Логические операции можно разделить на две условные группы: основную и расширенную. Список основных логических операций не велик:
- НЕ , отрицание, инверсия. Эта операция требует один операнд. Поэтому она может представлена как две операции: НЕ(а) и НЕ(b).
- ПОВТОР . Это просто передача выходного сигнала на выход, без каких либо изменений. Эта операция может показаться излишней, но это не так. В частности, занесение константы в регистр процессор выполняет именно с помощью этой операции АЛУ. Требует один операнд.
- И . В особых пояснениях не нуждается. Требует два операнда.
- ИЛИ . В особых пояснениях не нуждается. Требует два операнда.
- ИСКЛЮЧАЮЩЕЕ ИЛИ . Тоже не требует особых комментариев, на первый взгляд. Однако, эта операция не так проста. По сути, ИСКЛЮЧАЮЩЕЕ ИЛИ это не только логическая операция, но и арифметическая. Как арифметическая она формирует полусумму операндов. Почему полусумму? Потому что перенос не учитывается. Чуть позже мы это рассмотрим подробнее.
Расширенная группа логических операций может включать в себя И-НЕ, ИЛИ-НЕ, И(a, НЕ(b)), ИЛИ(a, НЕ(b)), и им подобные. Эти операции не обязательно реализуются специально, нередко они получаются как побочный эффект от схемотехнических решений при построении АЛУ.
При логических операциях перенос не используется.
Арифметические операции
Основные арифметические операции так же просты:
- Сложение .
- Вычитание .
- Увеличение . Инкремент, +1. По сути, это сложение. Но операция настолько востребована, что часто реализуется отдельно.
- Уменьшение . Декремент, -1.
- Смена знака . Смена знака числа не тождественна инверсии.
К расширенным арифметическим операциям относятся:
Да, мы все еще со школы знаем, что умножение и деление, вместе с сложением и вычитанием, являются основными действиями арифметики. Но их аппаратная реализация сложна, поэтому далеко не все процессоры их поддерживают. А если и поддерживают, то не всегда на аппаратном уровне, может быть и микропрограммная реализация.
Реализация умножения и деления в АЛУ встречается не часто. Зачастую это отдельные блоки умножителей/делителей.
В специализированных случаях могут быть реализованы и дополнительные операции, которые позволяют облегчить выполнение более сложных, комплексных, операций. Но это не обязательно на уровне АЛУ.
В арифметических операциях переносы имеют важное значение. Так сложение отличается от исключающего ИЛИ тем, что учитывает переносы между разрядами.
Дополнительным моментом, который надо учитывать, является существование знаковых и беззнаковых чисел. Это не всегда влияет на схемотехнику АЛУ, собственно выполнение операций. Но часто требует дополнительных схемотехнических решений для формирования служебных признаков (флагов результата, например).
Сдвиги
А вот эти операции нередко выполняются не АЛУ, а отдельными сдвигателями, которые могут включаться на входах АЛУ, но вне собственно АЛУ. Тем не менее, иногда АЛУ может выполнять и простые сдвиги на один разряд вправо или влево.
Заключение (промежуточное)
Сегодня мы "окинули взглядом" самые общие вопросы, касающиеся АЛУ и его работы. Процессоры могут включать в себя несколько разных АЛУ, с разной функциональностью, разным набором выполняемых операций.
В следующей статье займемся его внутренним устройством. При этом будем рассматривать лишь статические АЛУ. Надеюсь, будет интересно.
Арифметико-логическое устройство (АЛУ) - центральная часть процессора, выполняющая арифметические и логические операции.
АЛУ реализует важную часть процесса обработки данных. Она заключается в выполнении набора простых операций. Операции АЛУ подразделяются на три основные категории: арифметические, логические и операции над битами. Арифметической операцией называют процедуру обработки данных, аргументы и результат которой являются числами (сложение, вычитание, умножение, деление. ). Логической операцией именуют процедуру, осуществляющую построение сложного высказывания (операции И, ИЛИ, НЕ. ). Операции над битами обычно подразумевают сдвиги.
Содержание
История создания
Разработчик компьютера ENIAC, Джон фон Нейман, был первым создателем АЛУ. В 1945 году он опубликовал первые научные работы по новому компьютеру, названному EDVAC (Electronic Discrete Variable Computer). Годом позже он работал со своими коллегами над разработкой компьютера для Принстонского института новейших исследований (IAS). Архитектура этого компьютера позже стала прототипом архитектур большинства последующих компьютеров. В своих работах фон Нейман указывал устройства, которые, как он считал, должны присутствовать в компьютерах. Среди этих устройств присутствовало и АЛУ. Фон Нейман отмечал, что АЛУ необходимо для компьютера, поскольку оно гарантирует, что компьютер будет способен выполнять базовые математические операции включая сложение, вычитание, умножение и деление
Структура АЛУ
АЛУ состоит из регистров, сумматора с соответствующими логическими схемами и элемента управления выполняемым процессом. Устройство работает в соответствии с сообщаемыми ему именами (кодами) операций, которые при пересылке данных нужно выполнить над переменными, помещаемыми в регистры.
Арифметико-логическое устройство функционально можно разделить на две части :
- микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд);
- операционное устройство (АЛУ), в котором реализуется заданная последовательность микрокоманд (команд).
Рисунок 1 - Структурная схема арифметико-логического устройства
Структурная схема АЛУ и его связь с другими блоками машины показаны на рисунке 1. В состав АЛУ входят регистры Рг1 - Рг7, в которых обрабатывается информация , поступающая из оперативной или пассивной памяти N1, N2, . NS; логические схемы, реализующие обработку слов по микрокомандам, поступающим из устройства управления.
Закон переработки информации задает микропрограмма , которая записывается в виде последовательности микрокоманд A1,A2, . Аn-1,An. При этом различают два вида микрокоманд: внешние, то есть такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нем те или иные преобразования информации (на рис. 1 микрокоманды A1,A2. Аn), и внутренние, которые генерируются в АЛУ и воздействуют на микропрограммное устройство, изменяя естественный порядок следования микрокоманд. Например, АЛУ может генерировать признаки в зависимости от результата вычислений: признак переполнения, признак отрицательного числа, признак равенства 0 всех разрядов числа др. На рис. 1 эти микрокоманды обозначены р1, p2. рm.
Результаты вычислений из АЛУ передаются по кодовым шинам записи у1, у2, . уs, в ОЗУ. Функции регистров, входящих в АЛУ:
- Рг1 - сумматор (или сумматоры) - основной регистр АЛУ, в котором образуется результат вычислений;
- Рг2, РгЗ - регистры слагаемых, сомножителей, делимого или делителя (в зависимости от выполняемой операции);
- Рг4 - адресный регистр (или адресные регистры), предназначен для запоминания (иногда и формирования) адреса операндов и результата;
- Ргб - k индексных регистров, содержимое которых используется для формирования адресов;
- Рг7 - i вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.
Часть операционных регистров является программно-доступной, то есть они могут быть адресованы в команде для выполнения операций с их содержимым. К ним относятся : сумматор, индексные регистры, некоторые вспомогательные регистры.
Остальные регистры программно-недоступные, так как они не могут быть адресованы в программе. Операционные устройства можно классифицировать по виду обрабатываемой информации, по способу обработки информации и логической структуре.
АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования "операция/ режим адресации" базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.
Классификация АЛУ
- По способу действия над операндами АЛУ делятся на последовательные и параллельные. В последовательных АЛУ операнды представляются в последовательном коде, а операции производятся последовательно во времени над их отдельными разрядами. В параллельных АЛУ операнды представляются параллельным кодом и операции совершаются параллельно во времени над всеми разрядами операндов.
- По способу представления чисел различают АЛУ:
- для чисел с фиксированной точкой;
- для чисел с плавающей точкой;
- для десятичных чисел.
- По характеру использования элементов и узлов АЛУ делятся на блочные и многофункциональные. В блочном АЛУ операции над числами с фиксированной и плавающей точкой, десятичными числами и алфавитно-цифровыми полями выполняются в отдельных блоках, при этом повышается скорость работы, так как блоки могут параллельно выполнять соответствующие операции, но значительно возрастают затраты оборудования. В многофункциональных АЛУ операции для всех форм представления чисел выполняются одними и теми же схемами, которые коммутируются нужным образом в зависимости от требуемого режима работы.
- По своим функциям АЛУ является операционным блоком, выполняющим микрооперации, обеспечивающие приём из других устройств (например, памяти) операндов, их преобразование и выдачу результатов преобразования в другие устройства. Арифметическо-логическое устройство управляется управляющим блоком, генерирующим управляющие сигналы, инициирующие выполнение в АЛУ определённых микроопераций. Генерируемая управляющим блоком последовательность сигналов определяется кодом операции команды и оповещающими сигналами.
Операции в АЛУ
Выполняемые в АЛУ операции можно разделить на следующие группы:
- операции двоичной арифметики для чисел с фиксированной точкой;
- операции двоичной (или шестнадцатеричной) арифметики для чисел с плавающей точкой;
- операции десятичной арифметики;
- операции индексной арифметики (при модификации адресов команд);
- операции специальной арифметики;
- операции над логическими кодами (логические операции);
- операции над алфавитно-цифровыми полями.
Современные ЭВМ общего назначения обычно реализуют операции всех приведённых выше групп, а малые и микроЭВМ, микропроцессоры и специализированные ЭВМ часто не имеют аппаратуры арифметики чисел с плавающей точкой, десятичной арифметики и операций над алфавитно-цифровыми полями. В этом случае эти операции выполняются специальными подпрограммами. К арифметическим операциям относятся сложение, вычитание, вычитание модулей («короткие операции») и умножение и деление («длинные операции»). Группу логических операций составляют операции дизъюнкция (логическое ИЛИ) и конъюнкция (логическое И) над многоразрядными двоичными словами, сравнение кодов на равенство. Специальные арифметические операции включают в себя нормализацию, арифметический сдвиг (сдвигаются только цифровые разряды, знаковый разряд остаётся на месте), логический сдвиг (знаковый разряд сдвигается вместе с цифровыми разрядами). Обширна группа операций редактирования алфавитно-цифровой информации
Читайте также: