Как называется элементарная операция, из которой состоит выполнение каждой инструкции процессора
Обновлено: 21.11.2024
Отображение формул: ? Математические формулы были закодированы как MathML и отображаются в этой версии HTML с использованием MathJax для улучшения их отображения. Снимите флажок, чтобы отключить MathJax. Для этой функции требуется Javascript. Нажмите на формулу, чтобы увеличить ее.
Ранняя оценка времени приложения важна для принятия решений во время исследования пространства проектирования разнородных встраиваемых систем с точки зрения определения размеров аппаратной платформы и выбора компонентов. Решения, влияющие на продолжительность и стоимость проекта, должны быть приняты до того, как будет доступен прототип платформы и программный код, готовый для компоновки, поэтому оценка времени должна выполняться с использованием высокоуровневых моделей и симуляторов. Из-за постоянно растущей потребности в сокращении времени выхода на рынок сокращение времени, необходимого для получения результатов, так же важно, как и достижение высокой точности оценки. В этой статье мы предлагаем новый подход к оценке времени на уровне исходного кода с целью сократить разрыв между скоростью и точностью за счет повышения уровня абстракции и улучшения возможности повторного использования результатов. Мы вводим концепцию - элементарные операции как отдельные части исходного кода, которые позволяют фиксировать поведение платформы, не имея точной модели конвейера процессора, кэша и т. д. Мы также представляем метод оценки времени, основанный на элементарных операциях. для разработки эталонного теста профилирования оборудования и создания профилей приложений и платформ. Эксперименты показывают, что средняя ошибка оценки составляет 5 %, а максимальная — менее 16 %.
1. Введение
Системы на кристалле (SoC), которые используются для запуска современных сложных приложений, должны иметь гетерогенную структуру элементов обработки, памяти и связи, чтобы обеспечить высокую производительность, энергоэффективность и низкую цену. Из-за экспоненциального роста сложности разнородных систем предполагается, что производительность разработчиков должна возрасти в десять раз, чтобы успешно соответствовать системным требованиям и ограничениям при тех же временных и стоимостных ограничениях [1]. Ключом к успеху является принятие правильных решений на ранних стадиях проектирования, до сборки первого прототипа. Повышение уровня абстракции на всех этапах проектирования позволяет отделить вычисления от обмена данными и использовать отдельные модели приложений и платформ. Это приводит к более эффективному подходу к исследованию проектного пространства (DSE) [2]. Ранняя оценка времени является одним из наиболее важных этапов DSE. В последние годы традиционный подход с использованием высокоточного симулятора набора инструкций (ISS) был заменен высокоуровневыми моделями оценки времени, которые позволяют получать оценки на ранних стадиях проектирования [3–10].
В этой статье мы предлагаем метод оценки времени выполнения приложения на уровне исходного кода, основанный на концепции элементарных операций, которая позволяет улавливать архитектурные эффекты и влияние оптимизации компилятора. Метод оценки состоит из двух этапов: анализ и оценка. На этапе анализа профилируются конфигурации приложений и платформ, рассматриваемые для проектирования. Профиль приложения получается путем преобразования исходного кода приложения в список элементарных операций, структурированных в виде циклов, ветвей и последовательностей. Он не зависит от платформы и уровня оптимизации компилятора, поэтому один и тот же профиль приложения можно использовать для оценки времени выполнения на любой платформе. Профиль платформы получается путем выполнения теста под названием «ELOPS тест» 1 для каждой конфигурации платформы и для каждого уровня оптимизации компилятора отдельно. Этот бенчмарк был специально создан в рамках данного исследования для измерения времени выполнения элементарных операций на реальных платформах. Результаты выполнения тестов для каждой конфигурации платформы составляют профиль платформы для соответствующей конфигурации. На этапе оценки предлагаемый алгоритм оценки времени объединяет профили приложения и целевой платформы для получения оценки времени.
Точность нашего подхода оценивается с использованием алгоритма сжатия изображений JPEG и алгоритма Advanced Encryption Standard (AES) на нескольких конфигурациях оборудования на базе двух процессоров RISC: ARM A9 и Microblaze, специально созданных для платформы Xilinx Zynq ZC706. Достигнутая точность (то есть частота ошибок) аналогична самым точным современным методам оценки времени на уровне источника. Сильной стороной является значительное сокращение времени и усилий, необходимых для получения результатов, благодаря возможности повторного использования профилей приложений и платформ. Кроме того, предлагаемый метод можно легко масштабировать для систем с сотней и более элементов одного типа аналогично методу, продемонстрированному в [11].
Остальная часть этого документа организована следующим образом. В разделе 2 представлен обзор современного уровня техники в области высокоуровневой оценки времени.Предлагаемый метод оценки времени на уровне источника представлен в разделе 3. Поток оценки времени приложения описан в разделе 4. Тестовые примеры, использованные для оценки предлагаемого метода, приведены в первой части раздела 5. Результаты проведенного эксперименты представлены и обсуждаются в остальной части раздела.
2. Похожие работы
Авторы в [ 12 ] предлагают инфраструктуру моделирования на уровне источника, которая обеспечивает полный диапазон оценки производительности, энергопотребления, надежности, мощности и температуры. Для временного моделирования они опираются на свою предыдущую работу [3], в которой используется подход, основанный на моделировании, с обратной аннотацией на уровне промежуточного представления (IR). Моделирование эффектов конвейера на границах основных блоков требует дополнительного попарного моделирования блоков для каждой возможной комбинации пар блоков в эталоне с точностью до цикла. Они рассматривают модель кэша высокого уровня, реконструируя целевые трассировки памяти исключительно на основе информации IR и отладчика. Моделирование выполнения всего приложения выполняется с использованием System C и моделирования на уровне транзакций (TLM) [13] с ошибкой оценки менее 10%. Симуляция эффектов конвейера на границах базовых блоков требует дополнительного попарного моделирования блоков для каждой возможной комбинации пар блоков.
Другие подходы используют машинное обучение и математические модели для ранней оценки времени. Авторы в [8] используют искусственные нейронные сети (ИНС). ANN дает оценку времени на основе времени выполнения и общего количества инструкций каждого типа. Ошибка оценки составляет около 17%, но метод гораздо более гибкий по сравнению с методами моделирования и обеспечивает более высокий уровень повторного использования результатов. После начального периода обучения результаты оценки получаются быстро.
Методы, представленные в [9] и [10], основаны на линейной регрессии и ИНС с более высокой частотой ошибок — около 20 %. Авторы в [ 14 ] используют метод регрессии на основе дерева моделей в качестве предпочтительного метода машинного обучения.
Авторы в [ 11 , 15 , 16 ] предлагают гибридные методы: сначала моделирование используется для получения времени выполнения каждой процедуры на каждом типе элемента обработки, затем аналитические методы используются для учета эффектов кэширования и связи. р>
В [17] авторы используют линейную регрессию для расчета времени, но они используют набор специально созданных обучающих программ для определения стоимости инструкций абстрактной машины. Авторы пытаются уловить эффекты оптимизации кэша, конвейера и кода, создавая примеры с более длинными последовательностями инструкций и циклами. Однако, поскольку они полагаются на IR, они сталкиваются с проблемами при внедрении оптимизаций кода, поскольку виртуальные инструкции в переводе программы обучения не полностью соответствуют скомпилированной версии.
Концепция элементарных операций впервые была представлена в [18] в попытке охарактеризовать поведение платформы, не имея точной аппаратной модели. В этом предварительном методе ранней оценки времени отсутствовала поддержка оптимизации компилятора и способность оценивать задачи приложения, зависящие от ввода. В этой статье мы расширяем нашу предыдущую работу и представляем улучшенный метод.
3. Подход к элементарным операциям
Наш подход основан на разложении фрагмента исходного кода, написанного на языке программирования C (стандартный C11), на элементарные операции — отдельные части исходного кода, которые позволяют фиксировать поведение платформы, не имея точной модели процессорный конвейер, кеш и т. д. Набор элементарных операций конечен с несколькими подмножествами: целочисленные, логика с плавающей запятой и операции с памятью. Эти наборы связаны с частями процессора RISC-архитектуры и трактом данных памяти.
ЦП
Память компьютера физически обычно состоит из последовательности битов, каждый из которых имеет низкое или высокое напряжение. Эти биты организованы в группы битов, известные как слово.
Слова могут использоваться для хранения данных или инструкций. Программа состоит из последовательности слов, каждое из которых представляет одну «инструкцию», соответствующую одной элементарной операции, которую ЦП может выполнить с помощью исполнительного модуля (например, целочисленного модуля, модуля с плавающей запятой, модуля ветвления).
Как ЦП определяет одну конкретную инструкцию? Он отправляет адрес в память (помещая требуемое значение на адресную шину). Это двоичное число — последовательность битов, каждый из которых равен 0 или 1, — которая представляет собой последовательность низкого и высокого напряжения на наборе проводов, соединяющих ЦП с памятью программ.
Адресная шина определяет ячейку памяти, в которой будет выполняться следующая операция, в данном случае, где в памяти ЦП найдет следующую инструкцию. Когда слово памяти выбрано, ЦП посылает в память управляющий сигнал, чтобы «прочитать» значение, хранящееся в ячейке, что заставляет память поместить сохраненную комбинацию битов на шину данных, откуда она может быть прочитана ЦП.
Регистр, в котором хранится адрес следующей инструкции, называется программным счетчиком. Обычно после выполнения каждой инструкции программный счетчик увеличивается на единицу (отсюда и использование счетчика слов), так что он содержит адрес следующей инструкции. Следовательно, программа состоит в основном из списка инструкций; а программный счетчик позволяет ЦП проходить по списку, выполняя одну инструкцию за другой. Таким образом, скрытой, но подразумеваемой частью каждой инструкции является изменение программного счетчика, чтобы он содержал адрес следующей инструкции.
Важно различать адрес, по которому хранится инструкция, и содержимое этого адреса.
Регистры
ЦП также содержит регистры в целочисленном блоке, которые можно считывать и записывать. Они называются регистрами общего назначения.
Есть также регистры специального назначения, используемые для определенных задач:
Счетчик программ ПК (указывает на следующую инструкцию)
IR Instruction Rgeister ("Значение" текущей инструкции)
Регистр состояния SR (флаги состояния после выполнения инструкций)
SP Stack Указатель (указывает на следующее свободное место в стеке)
Кадр стека SF (используется для поиска переменных программы)
Счетчик программ
ЦП содержит ряд регистров специального назначения; самый важный из них называется программным счетчиком. Счетчик программ содержит адрес следующей инструкции.
Счетчик программ обычно имеет такую же ширину (количество битов), что и адресная шина. В компьютерных системах довольно часто имеется больше памяти, чем фактической памяти. Если бы использовались только 13 бит, память могла бы содержать 8 КБ инструкций. Если бы использовались 24 бита, можно было бы адресовать 16 МБ памяти.
Обычно содержимое счетчика программ автоматически увеличивается на 1 во время каждой инструкции. Таким образом, процессор выполняет инструкции в списке одну за другой. Существуют и другие возможности, позволяющие переходить (ветвления или вызовы процедур) в другую часть программы. Это делается путем изменения содержимого счетчика программ.
Помимо памяти, в которой хранятся инструкции (память программ), есть также память, в которой хранятся данные. Память данных обычно представляет собой оперативную память (RAM) (или иногда RWM, память для чтения/записи), в отличие от памяти программ, которая может быть либо RAM, либо ROM.
Самый распространенный способ выполнения программы — от одной инструкции к другой в памяти.
Счетчик программ автоматически увеличивается на единицу после каждой инструкции, чтобы можно было загрузить следующую инструкцию. Однако бывают ситуации, когда вы хотите перенести выполнение программы куда-то еще. Например, если вы хотите для какой-то цели создать бесконечный цикл, в котором компьютер многократно выполняет один и тот же набор инструкций, вы захотите вернуться к началу. Это означает загрузку счетчика программ чем-то другим. Мы рассмотрим различные способы управления следующей инструкцией; то есть управление потоком программы.
Чтение и письмо
Если ЦП выдает адрес, а затем содержимое этого адреса появляется в строках данных (например, в виде инструкции), это операция чтения. (Примечание. В гарвардской архитектуре инструкции в памяти программ можно только читать, они не могут быть записаны; эта память фактически является ПЗУ — памятью только для чтения.)
Возможны два вида операций; чтение, при котором ЦП указывает адрес в памяти данных, устанавливает провод управления чтением/записью в положение «чтение», и данные по этому адресу появляются на шине данных.
ЦП также может записывать данные в память данных; в этом случае ЦП указывает как адрес, так и данные, и устанавливает провод управления чтением/записью на «запись», после чего данные записываются по указанному адресу. (Чтение данных соответствует активации вывода разрешения на трехуровневом выходе ЦП, подключенном к шине данных; запись данных соответствует активации защелки.
Гарвард и Архитектура фон Неймана
Существует два способа организации памяти компьютера, используемой для хранения инструкций.
Память программ и память данных могут быть совершенно отдельными (они могут даже использовать ОЗУ с разной шириной, например, 14 бит для программных инструкций и 8 бит для данных) и с разным общим количеством адресов. Это пример гарвардской архитектуры. Он используется в основном процессорами микроконтроллеров.
Другой базовый способ проектирования компьютера, и на сегодняшний день наиболее распространенный, заключается в использовании единой системы памяти как для программы, так и для данных. Система адресации используется как для инструкций (хранящихся в виде одного или двух 16-битных чисел), образующих программу, так и для данных различного типа (8-битные байты или более длинные слова). Это называется архитектурой фон Неймана .
В архитектуре фон Неймана инструкция сначала должна быть получена с помощью счетчика команд; тогда его можно будет выполнить. Так как при выполнении инструкции она может также читать или записывать данные, вы часто не можете загрузить одну инструкцию и одновременно выполнить другую. Таким образом, основная последовательность в системе архитектуры фон Неймана такова:
Это означает, что такая система может работать медленнее. С другой стороны, она обладает большими преимуществами гибкости, а эффективное использование кеша памяти может существенно снизить кажущуюся медлительность архитектуры.
Например, что происходит, когда вы загружаете игру с диска на свой компьютер? Программа хранится в виде данных, например, на диске. Вы должны прочитать эти данные и сохранить их в памяти вашего компьютера. Когда вы это сделаете, вы можете обращаться с ней как с программой (то есть как с набором инструкций) и запускать (выполнять) ее. С архитектурой фон Неймана, поскольку у вас есть только одна система памяти, проблем нет; но с гарвардской архитектурой вы не можете этого сделать - вы не можете записывать данные в память программы - для загрузки программы в память программы требуется специальная система.
Гарвардская архитектура также не позволяет считывать данные из памяти программы. Например, вы можете включить в свою программу таблицы данных, которые могут использоваться программой; например, сообщения, которые должны отображаться на экране, или какая-то «справочная таблица». В архитектуре фон Неймана проблем нет; вы можете просто хранить таблицу вместе с вашей программой и читать ее, когда захотите, потому что инструкция может считывать данные с любого адреса; в гарвардской архитектуре данные, хранящиеся в памяти программ, не могут быть прочитаны как данные в памяти данных. Есть способы обойти эту проблему.
Архитектура фон Неймана используется для большинства компьютеров; он позволяет хранить и запускать различные программы. Гарвардская архитектура больше подходит для микроконтроллера; при использовании он будет запускать только одну программу, которая будет храниться в ПЗУ в его программной памяти. Кроме того, в некоторых случаях может оказаться полезной дополнительная скорость без сложного сложного контроллера кэша.
Для ускорения работы процессора многие компьютеры используют так называемую "конвейерную систему". Это означает, что вы делите операцию инструкции на отдельные части, которые должны выполняться одна за другой; но вы договариваетесь, что пока выполняется одна часть одной инструкции, выполняются более ранние части более поздних инструкций. Например, рассмотрим четырехступенчатый конвейер; если каждый этап занимает 100 нс, то для полной обработки инструкции требуется всего 400 нс; но на самом деле производительность машины может составлять одну инструкцию каждые 100 нсек, поскольку четыре разные части четырех разных инструкций выполняются одновременно.
Итак, пока выполняется одна инструкция, другая запрашивает исходные данные, результаты предыдущей операции записываются обратно, а еще одна новая инструкция извлекается.
Процессоры RISC и CISC
Эти аббревиатуры означают «Компьютер с сокращенным набором инструкций» и «Компьютер со сложным набором инструкций». Это дает название двум различным философиям проектирования компьютеров. В RISC-процессоре имеется довольно небольшое количество довольно простых инструкций. Каждая из эти инструкции выполняют одну простую операцию, и из памяти нужно извлечь не более одного исходного значения. В таком процессоре инструкции могут выполняться очень быстро. Однако для некоторых операций требуется целая серия инструкций: например, умножить два на восемь битовые числа, единой инструкции нет, нужен целый список инструкций.
В процессоре CISC одна инструкция может выполнять целую последовательность операций, например, вы можете умножить два числа с плавающей запятой и добавить третье (a + b*c) в одной инструкции; другие процессоры выполняют еще более сложные действия за одну инструкцию.
Линии, используемые для передачи данных, называются шиной данных, а линии, передающие сигналы, разрешающие различным устройствам взять на себя управление шиной, называются линиями управления. Строки адреса определяют место в памяти, в которое или из которого данные должны быть записаны или прочитаны. Кроме того, линии электропередач обеспечивают электроэнергию, необходимую для общего функционирования.
Часто шина используется более чем двумя устройствами. Здесь необходимо определить, какое устройство возьмет на себя управление шиной, чтобы начать передачу информации. Линии управления отправляют импульсы, которые действуют как сигналы, разрешающие устройствам взять на себя управление шиной. Также передаются сигналы тактовой синхронизации, прерывания и подтверждения запросов шины.
• Этот путь соединяет все остальные компоненты на материнской плате. Пути, которые соединяются между собой, называются «автобусами».
В системе есть внутренние шины и внешние шины.
•Внутренние шины передают данные внутри компонентов на материнской плате.
• По внешним шинам данные передаются на другие устройства и периферийные устройства, подключенные к материнской плате.
Во внутренней шине она соединяет все внутренние компоненты компьютерной системы. Это шина памяти, шина объединительной платы или системная шина в компьютерной системе.
• Шины процессор-память очень быстрые, но имеют небольшую длину. Они синхронизируются как по времени, так и по ширине с памятью машины, чтобы извлечь максимальную пропускную способность. Дизайн этих автобусов служит очень конкретной цели.
Внешние шины передают данные на другие устройства:
• Длина шин ввода-вывода в основном больше длины шин процессора-памяти. Они могут подключаться к устройствам с разной пропускной способностью и совместимостью с другой архитектурой.
• Третий тип шины называется объединительной шиной. Они названы так потому, что интегрированы в корпус машины и служат в качестве одноточечного контакта между процессором, устройствами ввода-вывода и памятью.
ТРИ РАЗЛИЧНЫХ ТИПА ШИН:
Есть три типа шин, которые используются для передачи некоторой информации от процессора в память:
• Шина данных
• Адресная шина
• Шина управления
Эти шины соединяют пути ко всем остальным компонентам на материнской плате.
Расположение шин в структуре компьютера называется шинной архитектурой.
Шина данных:
• Это наиболее распространенный тип шины. Он передает данные вычислительной системы на все остальные компоненты материнской платы.
• Он передает данные между памятью, ЦП и периферийными устройствами.
• В таких автобусах это очень распространенный маршрут.
• На скорость передачи данных влияет количество линий в шине данных.
• Здесь шина данных является двунаправленной.
• ЦП может считывать и записывать данные, используя шины данных.
Адресная шина:
• Каждый компонент в компьютерной системе имеет свой уникальный идентификатор, называемый адресом
• Чтобы быстро получить доступ к каждому символу в памяти, компьютер должен иметь к нему доступ.
•Каждый символ в памяти имеет свой номер адреса.
Для связи используется адресная шина, указывающая адрес этого компонента.
• Здесь адрес является однонаправленным.
• Он передает адрес ячейки памяти из основной памяти в процессор через адресную шину.
• Шина управления управляет работой компьютерной системы
• Он передает информацию со скоростью миллиард символов в секунду.
• Он читает, записывает и выполняет действия, и после выполнения результат будет отправлен обратно в память.
• Он управляет направлением данных в инструкциях процесса.
• Здесь шина управления является двунаправленной.
•Данные распространяются по синхронным шинам.
•Системные часы управляют шинами. Передача данных может происходить только по тиканью часов, которые синхронизируют все устройства, использующие шину.
• Таким образом, система очень зависит от правильной работы часов. Отклонения в работе часов делают систему подверженной сбоям. Эти отклонения сводятся к минимуму за счет минимальной длины шины.
• Ограничение длины шины заключается в том, что время, необходимое для прохождения информации по шине, должно быть больше, чем время цикла шины.
• Линии управления определяют работу асинхронных шин.
Время контролируется с помощью подробного протокола установления связи. Протокол в основном включает в себя запрос, за которым следует обслуживание запрошенного, завершающееся подтверждением того, что запрос был обслужен.
Автобусный арбитраж можно разделить на четыре основные категории.
<р>1. Арбитраж гирляндной цепи.В этой схеме линия управления проходит от устройства с наивысшим приоритетом к устройству с более низким приоритетом. Эта схема не справедлива, так как существует вероятность того, что устройство с более низким приоритетом никогда не получит управление шиной. <р>2. Централизованный параллельный арбитраж:
Централизованный посредник выбирает, кто получит шину. Хотя это более всеобъемлющая форма арбитража, в которой каждое устройство получает шанс, она подвержена узким местам из-за вычислений, принимаемых арбитром. <р>3. Распределенный арбитраж с использованием самостоятельного выбора. Эта схема аналогична централизованному арбитражу, но вместо того, чтобы центральный орган делал выбор, сами диски определяют, кто имеет наивысший приоритет.
• В каждом компьютере есть внутренние часы, регулирующие скорость выполнения инструкций. Все компоненты системы синхронизированы по часам.
• ЦП требуется меньшее количество тактов для выполнения каждой инструкции. Во-вторых, производительность выполнения инструкций измеряется в тактовых циклах (не в секундах).
• Тактовая частота измеряется в гигагерцах (ГГц). По сути, это количество тактов часов в секунду.
Основное различие между системными часами и часами шины заключается в следующем:
Этот обмен данными происходит в следующих форматах.
• Ввод-вывод с отображением памяти:
В этом формате регистры интерфейса отображаются в карте памяти компьютера, и нет реальной разницы между доступом к памяти и доступом к устройству ввода-вывода. Преимущество в том, что это быстро, но занимает слишком много места в памяти.
• Байт содержит 8 бит и, следовательно, может хранить до 2^8 различных значений.
• Слово представляет собой набор байтов, поэтому длина слова должна быть кратна 8 битам.
Обычный размер слова – 32 бита (или 4 байта).
• Байт состоит из 8 бит и, следовательно, может хранить до 2^8 различных значений.
•Каждый отдельный байт содержит уникальный адрес и может быть адресован байтом
• Слово представляет собой набор байтов, поэтому длина слова должна быть кратна 8 битам.
Общий размер – 32 бита (или 4 байта).
<р>1. Низкоуровневое чередование и <р>2. Чередование высокого порядка <р>1. Младшее чередование:Младшие биты адреса используются для выбора банка. Память с чередованием низкого порядка размещает последовательные адреса памяти в разных моделях памяти. Крайние правые биты используются для определения модуля, а крайние левые выбирают смещение внутри модуля.
Следовательно, в случае, если у нас есть побайтно-адресуемая память, состоящая из 8 модулей по 2 байта каждый, то есть всего 16 байт памяти, они будут расположены следующим образом:
(см. прикрепленное изображение) р>
<р>2. Перемежение высокого порядка: используются старшие биты адреса. Этот тип чередования распределяет адрес таким образом, что каждый модуль содержит последовательный адрес. В этом случае крайние левые биты выбирают модуль, а крайние правые — смещение внутри модуля.
когда устройство ввода-вывода запрашивает разрешение на чтение или передачу данных в память. <р>2. Арифметические ошибки:
когда выполняются математически недопустимые операции, такие как деление на ноль и квадратный корень из отрицательного числа. <р>3. Аппаратная неисправность:
Отказ любой части системы — это еще одно событие, которое может вызвать прерывание, чтобы сообщить процессору, что конкретное устройство больше не работает.
События, которые изменяют нормальный поток выполнения в системе, называются прерываниями. В основном классификация прерываний обычно выполняется на основе того, как они инициируются или обрабатываются. И система, и пользователь могут инициировать прерывание.
• IR (память инструкций):
содержит следующую инструкцию для выполнения.
• InREG (регистр ввода):
содержит данные с устройства ввода.
Архитектура набора инструкций (ISA) машины определяет инструкции, которые компьютер может выполнять, и формат каждой инструкции. ISA — это, по сути, интерфейс между программным обеспечением и оборудованием.
Каждая инструкция MARIE состоит из 16 бит. Старшие биты (12-15) определяют код операции. Код операции определяет команду, которая должна быть выполнена. Младшие значащие биты (0-11) формируют адрес.
Формат инструкции МАРИ:
(см. прикрепленное изображение)
Каждая инструкция MARIE состоит из 16 бит. Старшие биты (12-15) определяют код операции. Код операции определяет команду, которая должна быть выполнена. младшие значащие биты (0-11) формируют адрес.
(См. прикрепленное изображение, чтобы увидеть формат инструкции MARIE)
Набор инструкций MARIE'S состоит из следующих инструкций:
• Загрузить: Эта инструкция определяется кодом операции 0001. Формат инструкции — ЗАГРУЗИТЬ X. Значение по адресу, указанному X, затем загружается в аккумулятор (AC).
•Добавить: Эта инструкция определяется кодом операции 0011. Формат инструкции — ДОБАВИТЬ X. Значение по адресу, указанному X, затем добавляется к значению аккумулятора (AC), и результат сохраняется обратно в переменный ток.
• Subt: Эта инструкция определяется кодом операции 0100. Формат инструкции — SUBT X. Значение по адресу, указанному X, затем добавляется к значению аккумулятора (AC), а результат сохраняется обратно в переменный ток.
• Ввод: эта инструкция определяется кодом операции 0101. Формат инструкции — ВВОД. Это принимает значение, введенное с клавиатуры, которое загружается в аккумулятор (AC).
•Вывод: Эта инструкция определяется кодом операции 0110. Формат инструкции — ВЫВОД. Значение аккумулятора (AC) выводится на дисплей.
• Останов: Эта инструкция определяется кодом операции 0001. Формат инструкции — ЗАГРУЗКА X. Значение по адресу, указанному X, затем загружается в аккумулятор (AC).
• Skipcond: эта инструкция определяется кодом операции 1000. Формат инструкции — SKIPCOND. следующая инструкция пропускается при условии.
Машинный язык, в котором код дополнения цифры является дополнением кода цифры.
Связанные термины:
Скачать в формате PDF
Об этой странице
Что такое сборка?
МАЙКЛ Л. ШМИТ, процессор Pentium™, 1995 г.
Машинный язык
Машинный язык — это язык, понятный компьютеру. Это очень сложно понять, но это единственное, с чем может работать компьютер. Все программы и языки программирования в конечном итоге генерируют или запускают программы на машинном языке. Машинный язык состоит из инструкций и данных, которые представляют собой двоичные числа. Машинный язык обычно отображается в шестнадцатеричной форме, чтобы его было немного легче читать. Язык ассемблера почти такой же, как машинный, за исключением того, что инструкции, переменные и адреса имеют имена, а не просто шестнадцатеричные числа.
Обзор исследования поддерживаемого инструментами тестирования проектов, основанных на требованиях, на основе моделей
Ралука Маринеску, . Пол Петтерссон, Достижения в области компьютеров, 2015 г.
6.4 АсмЛ
Затем мы выбираем репрезентативный инструмент категории записи до/после и применяем его к нашему рабочему примеру.
Архитектура
Сара Л. Харрис, Дэвид Харрис, в Digital Design and Computer Architecture, 2022
6.4.7 Интерпретация кода машинного языка
Для интерпретации машинного языка необходимо расшифровать поля каждого 32-битного командного слова. В разных инструкциях используются разные форматы, но все форматы имеют общее 7-битное поле кода операции. Таким образом, лучше всего начать с просмотра кода операции, чтобы определить, является ли это инструкцией типа R, I, S/B или U/J.
Перевод машинного языка на язык ассемблера
Переведите следующий код машинного языка на язык ассемблера.
Решение
Во-первых, мы представляем каждую инструкцию в двоичном виде и смотрим на семь младших значащих битов, чтобы найти код операции для каждой инструкции.
0100 0001 1111 1110 1000 0011 1011 0011 (0x41FE83B3)
1111 1101 1010 0100 1000 0010 1001 0011 (0xFDA48293)
Код операции определяет, как интерпретировать остальные биты. Код операции первой инструкции — 01100112 ; Итак, согласно Таблице B.1 в Приложении B, это инструкция R-типа, и мы можем разделить остальные биты на поля R-типа, как показано в верхней части рисунка 6.28. Код операции второй инструкции — 00100112 , что означает, что это инструкция I-типа. Мы группируем оставшиеся биты в формате I-типа, как показано на рис. 6.28, где показан ассемблерный код, эквивалентный двум машинным инструкциям.
Рисунок 6.28. Преобразование машинного кода в ассемблерный код
Языки программирования
ХАРВИ М. ДЕЙТЕЛЬ, БАРБАРА ДЕЙТЕЛЬ, Введение в обработку информации, 1986 г.
Язык ассемблера
Сегодня программисты редко пишут программы на машинном языке. Вместо этого они используют более понятные языки ассемблера или языки высокого уровня. Эти языки частично ответственны за широкое использование компьютеров в настоящее время.
Программисты, обремененные программированием на машинном языке, начали использовать сокращения, похожие на английские, для различных инструкций машинного языка. Эти аббревиатуры, называемые мнемоникой (вспомогательные средства запоминания), относятся к действию, которое необходимо предпринять, и имеют больше смысла для программиста. Например, вместо того, чтобы писать «+ 20» для обозначения сложения, программист может написать мнемоническое «ДОБАВИТЬ»; «SUB» может использоваться для вычитания, «DIV» — для деления и т.п. Даже местам хранения были даны имена. Если бы ячейка 92 содержала сумму, ее можно было бы назвать «ИТОГО» или «СУММА» вместо 92. Получившиеся в результате программы было намного легче понять и модифицировать. Например, в программе начисления заработной платы, которая вычитает общие вычеты из валовой заработной платы для расчета чистой заработной платы, могут появиться следующие инструкции на ассемблере:
К сожалению, компьютеры не могли понять эти программы, поэтому мнемоники все равно приходилось переводить на машинный язык для обработки. В профессии программиста возникла аристократия. «Высший класс» состоял из программистов, которые писали программы с использованием англоподобной мнемотехники. Затем «простолюдины», которых называли ассемблерами, брали эти программы и вручную переводили их на машинный язык — довольно механическая работа. В 1950-х годах программисты поняли, что этот перевод может быть выполнен компьютерами быстрее и точнее, чем люди, и поэтому была написана первая программа на ассемблере, или программа-переводчик (рис. 9-1). Программа инструкций, написанная на языке ассемблера, известна как исходная программа; программа на ассемблере переводит ее в программу на машинном языке, называемую объектной программой.
Рисунок 9-1.Программа на ассемблере переводит программу на языке ассемблера (исходную программу) в программу на машинном языке (объектную программу).
Программы можно было писать быстрее на языке ассемблера, чем на машинном языке, хотя их все равно приходилось переводить на машинный язык, прежде чем они могли быть выполнены (см. рис. 9-2). Работа по переводу была более чем оправдана благодаря увеличению скорости программирования и уменьшению количества ошибок.
Рисунок 9-2. Пример мнемоники на языке ассемблера, используемой в некоторых мейнфреймах IBM. Полный набор инструкций предлагает около 200 мнемонических кодов. Коды операций показаны в шестнадцатеричной системе счисления (с основанием 16).
Программы на языке ассемблера также зависят от машины и не переносимы. Программистам приходится писать большое количество инструкций даже для выполнения простых задач, а программы по-прежнему выглядят на компьютерном языке ( рис. 9-3 ).
Возможно, в настоящее время языки ассемблера в основном используются при написании операционных систем — программ, управляющих оборудованием и делающих его более доступным для пользователей компьютеров (см. главу 12 ).
Макроинструкции
Следующим шагом в процессе эволюции стало введение макрокоманд . Макроинструкция — это одна инструкция, которая транслируется в несколько инструкций машинного языка. С помощью одной макрокоманды программист может указать действие, для которого обычно требуется несколько инструкций на языке ассемблера. Например, простой макрос SUM A, B, C может использоваться для добавления A к B и сохранения результатов в C.
Всякий раз, когда программа на ассемблере сталкивается с макрокомандой, она сначала выполняет раскрытие макроса. Он создает серию инструкций на языке ассемблера для выполнения функции макроса. Например, СУММА A, B, C может быть расширена до
а затем ассемблер переводил эти инструкции на машинный язык.
Изучение вычислительного языка (обновление главы 15)
Менно ван Заанен, Коллин де ла Игуэра, Справочник по логике и языку (второе издание), 2011 г.
16.1 Введение
При работе с языком (машинное) обучение может принимать различные формы, наиболее важными из которых являются те, которые связаны с изучением формальных языков и грамматик на основе данных. Вопросы в этом контексте находились на пересечении областей индуктивного вывода и компьютерной лингвистики в течение последних 50 лет. Возвращаясь к новаторской работе, Хомский (1955) и Соломонов (1964) по совершенно разным причинам интересовались системами или программами, которые могли бы выводить язык при представлении информации о нем.
Голд (1967) чуть позже предложил объединяющую парадигму под названием идентификация в пределе, а термин грамматический вывод, по-видимому, появился в докторской диссертации Хорнинга (1969).
Вне области лингвистики исследователи и инженеры, занимающиеся распознаванием образов, под влиянием Фу (1974) изобрели алгоритмы и изучали подклассы языков и грамматик с точки зрения того, что можно или нельзя изучить ( Фу и Бут, 1975 г.).
Исследователи в области машинного обучения занимались смежными проблемами (самой известной из них была задача вывода детерминированного конечного автомата на основе примеров и контрпримеров строк). Angluin (1981, 1987) ввел важную настройку активного обучения или обучения на основе запросов, в то время как Питт и Вармут (1993) и Питт (1989) дали несколько результатов, вдохновленных сложностью. , показывая сложность различных проблем обучения.
В более прикладных областях, таких как вычислительная биология, исследователи также работали над изучением грамматик или автоматов из строк, например Brazma et al. (1998) . Точно так же, исходя из компьютерной лингвистики, можно указать на работы, связанные с изучением языка с более сложными грамматическими формализмами (Канадзава, 1998), более статистическими подходами, основанными на построении языковых моделей, или различными системами, введенными для автоматического построения грамматик из предложений (Адриаанс , 1992; ван Заанен, 2000). Обзоры связанных работ в конкретных областях можно найти у Сакакибара (1997 г.), де ла Хигера (2005 г.) и Вольф (2006 г.) .
При рассмотрении истории теории формального обучения можно выделить несколько тенденций. Из «интуитивных» подходов, описанных в ранних исследованиях, возникли более фундаментальные идеи. Основываясь на этих идеях и более широком доступе данных, больше исследований было направлено на прикладное изучение языков.В последнее время наблюдается тенденция требовать более теоретически обоснованных доказательств в прикладной области, в основном из-за увеличения размера проблем и важности наличия гарантий на результаты. Эти тенденции привели к междисциплинарному характеру формального изучения языка. Здесь можно найти аспекты изучения естественного языка (как области применения), машинного обучения и теории информации.
При попытке найти общие черты работы в области изучения языков следует учитывать как минимум два аспекта. Обучение происходит в обстановке. Проблемы в этом измерении — это свойства обучающих данных, такие как положительные/отрицательные экземпляры, количество или уровень шума, а также мера успеха. Другое измерение связано с парадигмами в отношении обобщения обучающих данных. Цель изучения языка состоит в том, чтобы найти язык, который используется для генерации обучающих данных. Этот язык обычно более общий, чем обучающие данные, и требует подхода к обобщению.
Эта глава организована по параметрам обучения и парадигм. Во-первых, мы рассмотрим различные настройки обучения и их параметры. Во-вторых, обсуждаются различные парадигмы обучения, после чего делается вывод.
Читайте также: