RU2109333C1 - Цифровой компьютер с возможностью параллельного выполнения двух и более команд - Google Patents

Цифровой компьютер с возможностью параллельного выполнения двух и более команд Download PDF

Info

Publication number
RU2109333C1
RU2109333C1 SU4894971A SU4894971A RU2109333C1 RU 2109333 C1 RU2109333 C1 RU 2109333C1 SU 4894971 A SU4894971 A SU 4894971A SU 4894971 A SU4894971 A SU 4894971A RU 2109333 C1 RU2109333 C1 RU 2109333C1
Authority
RU
Russia
Prior art keywords
command
output
commands
input
instructions
Prior art date
Application number
SU4894971A
Other languages
English (en)
Inventor
Блейнер Бартоломью
Вассилиадис Стоматис
Джеймс Айхмейер Ричард
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Application granted granted Critical
Publication of RU2109333C1 publication Critical patent/RU2109333C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Изобретение относится к области цифровой вычислительной техники и предназначено для обработки двух или больше компьютерных команд параллельно. Цифровая компьютерная система, имеющая блок основной памяти для хранения блоков информации, содержащая компьютерные команды, включает в себя блок объединения команд для анализа команд и добавление к каждой команде поля маркера. Маркированные команды загружаются в основную память. Компьютерная система также включает в себя множество функциональных блоков обработки команд, которые функционируют параллельно друг с другом. Команды, поданные на функциональные блоки, поступают из памяти посредством блока ЗУ (КЭШ). В период времени подачи команды поля маркера команд рассматриваются, и те, которые маркированы для параллельной обработки, пересылаются в разные функциональные блоки в соответствии с кодами их полей кодов операций. 5 з.п.ф-лы, 12 ил.

Description

Настоящая патентная заявка США соответствует нижеследующим одновременно поданным патентным заявкам США:
1) Заявка регистрационный N 07/519.384 (по реестру IBM EN 9-90-020), поданная 4 мая 1990 г. под названием "Структура вычислительной машины с расширяемым набором составных команд"; изобретателями являются Стаматис Вассилиадис и др.
2) Заявка регистрационный N 07/519.382 ( по реестру IBM EN 9-90-019), поданная 4 мая 1990 г. под названием "Средство объединения команд общего назначения для процессоров параллельной обработки на уровне команд"; изобретателями являются Ричард Дж.Айкемейер и др.
3) Заявка регистрационный N 07/504/910 (по реестру IBM EN 9-90-014), поданная 4 апреля 1990 г. под названием "Устройство технических средств для сокращения зависимости от данных", изобретателями являются Стаматис Вассилиадис и др., и
4) Заявка регистрационный N 07/522.291 (по реестру IBM EN 9-90-012), поданная 10 мая 1990 г. под названием "Процессор объединения команд для кэш", изобретателями являются Бартоломей Бленер и др.
Эти одновременно поданные заявки и настоящая заявка являются собственностью одного и того же правопреемника, именно "Интернейшнл бисзнес Машинз корпорейшн (IBM) оф Армонк", Нью-Йорк.
Описания, приведенные в этих одновременно поданных заявках, включены настоящим в настоящую заявку путем ссылки на них.
Изобретение касается цифровых компьютеров и процессоров цифровых данных и конкретно касается цифровых компьютеров процессоров данных, способных выполнять две и больше команд параллельно.
Традиционные компьютеры, которые принимают последовательность команд и выполняют последовательность по одной команде за один раз, известны. Команды, выполняемые этими компьютерами, имеют дело с однозначными объектами, и поэтому получили название "скалярные".
Операционная скорость традиционных скалярных компьютеров доведена до их предела усовершенствованиями в технологии схем, устройства компьютера и структуре компьютера. Однако при каждом новом поколении конкурирующих вычислительных машин новые средства ускорения должны быть найдены для традиционных скалярных вычислительных машин.
Недавнее усовершенствование в отношении ускорения скорости вычисления монопроцессоров нашло свое выражение в сокращенной структуре набора команд, которая использует ограниченный набор очень простых команд. Другое средство ускорения представляет собой структуру набора сложных команд, которая основана на минимальном наборе сложных многооперандных команд. Применение любой их этих структур к существующим скалярным компьютерам потребует фундаментального изменения структуры и набора команд вычислительной машины. Такая далеко идущая трансформация чревата расходами, временем простоя и начальным снижением надежности и доступности вычислительной машины.
В стремлениях применения к скалярным вычислительным машинам некоторых преимуществ, достигаемых с помощью сокращения набора команд, были разработаны так называемые "суперскалярные" компьютеры. Эти вычислительные машины являются по существу скалярными, эффективность которых увеличивается благодаря их адаптированию выполнять больше одной команды за один раз из потока команд, содержащего последовательность одинарных скалярных команд. Эти вычислительные машины типично решают во время выполнения команд, может ли быть выполнено параллельно две или больше команд в последовательности скалярных команд. Решение основывается на кодах операции (ОП-кодах) команд и зависимости от данных, которые могут находиться между командами. ОП-код определяет вычислительные технические средства компьютера, необходимые для команды. Вообще, невозможно одновременно выполнить две или больше команд, которые используют одно и то же техническое средство (зависимость от технических средств) или один и тот же операнд (зависимость от данных). Эти зависимости от технических средств и данных препятствуют параллельному выполнению некоторых комбинаций команд. В этих случаях находящиеся в такой зависимости команды выполняются последовательно. Это, конечно, снижает эффективность суперскалярной вычислительной машины.
Суперскалярные компьютеры имеют свои недостатки, которые необходимо снизить. Конкретное количество времени расходуется при решении в период времени выполнения команд, которые (команды) могут выполняться параллельно. Это время не может быть легко замаскировано путем перекрывания с другими операциями вычислительной машины. Этот недостаток становится более заметным, когда увеличивается сложность структуры набора команд. Решение о параллельном выполнении также должно выноситься повторно каждый раз, когда рассматриваются одни и те же команды.
Для увеличения полезного срока службы существующих скалярных компьютеров важно каждое средство ускорения выполнения. Однако ускорение посредством структуры сокращенного набора команд, структуры набора сложных команд или суперскалярных способов потенциально слишком дорогое и слишком невыгодное, чтобы применять к существующим скалярным машинам. Предпочитается ускорять скорость выполнения такого компьютера путем параллельного или одновременного выполнения команд в существующих наборах команд без необходимости изменения набора команд, изменения структуры вычислительной машины или увеличения времени, необходимого для выполнения команд.
В одновременно поданной патентной заявке N 07/519.384 (IBM реестр IN 9-90-020) предложена структура вычислительной машины для набора расширяемых составных команд (SCISM), в которой параллелизм на уровне команд достигается путем статического анализа последовательности скалярных команд в период времени, предшествующий выполнению команды, чтобы образовать составные команды, образованные смежными группами существующих команд в последовательности, которые могут быть выполнены параллельно. Соответствующая контрольная информация в форме маркеров добавляется в поток команд для индикации, где начинается составные команды, а также для индикации количества существующих команд, которые включены в составную команду. Соответственно, как здесь используется, термин "объединение" означает группирование команд, содержащихся в последовательности команд, группирование это для цели параллельного или одновременного выполнения сгруппированных или объединенных команд. Как минимум, объединение удовлетворяется "спариванием" двух команд для одновременного выполнения. Предпочтительно объединяемые команды не меняют своих форм, в каких они представлены для скалярного выполнения. Как пояснено ниже, объединяемые команды сопровождаются информацией маркера об объединении, т.е. битами, приложенными к сгруппированным командам, которые обозначают группу команд для параллельного выполнения.
В цифровой компьютерной системе, которая включает в себя средство для выполнения множества команд параллельно, конкретный выгодный вариант реализации изобретения основан на структуре памяти, которая обеспечивает объединение команд перед их выдачей и выполнением. Такая память является компонентом иерархической структуры памяти, которая обеспечивает команды для CPU (центральный обрабатывающий блок) компьютера. Типично такая структура включает в себя быстродействующую память кэш, содержащую часто выбираемые команды, менее быстродействующую основную память или первичную память, соединенную с кэш, и небыстродействующую большой емкости вспомогательную память. Типично кэш и основная память содержат команды, которые могут непосредственно касаться выполнения. Доступ к командам во вспомогательной памяти поддерживается через адаптер ввода/вывода (Вв/Выв), соединенный между основной памятью и вспомогательной памятью.
В скалярном компьютере, имеющем иерархическую организацию памяти, изобретение основывается на комбинации, включающей в себя интерфейс ввода/вывода для образования из вторичной памяти последовательности для выполнения, средство объединения команд, которое образует информацию маркера объединения в ответ на последовательность команд, причем эта информация маркера объединения указывает команды последовательности, которые могут быть выполнены параллельно, и основную память, соединенную с интерфейсом ввода/вывода и средством объединения команд, для запоминания (загрузки в память) последовательности команд с информацией маркера объединения.
Как известно, основная память обеспечивает место для данных и команд, которые сразу становятся доступными для CPU в отношении контроля для выполнения. Использование основной памяти в хорошо сконструированных системах иерархической памяти в ней самой и в системе служат для повышения общей эффективности действия скалярного компьютера. В изобретении запоминание информации маркера объединения в основной памяти дает возможность использовать информацию в течение всего времени и так долго, сколько команды остаются в основной памяти. Далее, команды ущемляют основную память, так как после того как поступили в кэш, часто остаются в кэш достаточно долго, чтобы использовать их больше одного раза.
Для лучшего понимания изобретения вместе с его преимуществами и отличительными признаками следует обратиться к нижеследующему описанию и описанным ниже чертежами, на которых изображено:
на фиг. 1 - вид варианта реализации части цифровой компьютерной системы, выполненной в соответствии с настоящим изобретением;
на фиг. 2,A - 2,D - иллюстрации альтернативных реализаций запоминающего устройства (ЗУ) для информации маркера объединения в основной памяти;
на фиг. 3 - вид в увеличенном масштабе структуры потока данных между адаптером Вв/Выв и основной памятью в компьютерной системе на фиг. 1;
на фиг. 4 - временная схема передачи команд в структуре потока данных на фиг. 3;
на фиг. 5, A - вид длины команд, имеющего маркеры объединения или поля маркеров, связанные с командами;
на фиг. 5, B - вид длины потока команд, имеющего поля границ команд, связанные с командами;
на фиг. 6 - вид с большими подробностями внутренней конструкции представленного варианта реализации блока объединения команд, который может использоваться в компьютерной системе на фиг. 1;
на фиг. 7 - вид с большими подробностями представленной внутренней конструкции в отношении каждого блока анализатора объединения на фиг. 3;
на фиг. 8 - пример логической схемы, которая может использоваться для реализации анализатора объединения и генератора маркеров на фиг. 6, которые образует маркеры объединения для первых трех команд в потоке команд;
на фиг. 9 - таблица, используемая для пояснения функционирования примера на фиг. 8;
на фиг. 10 - вид представленного варианта реализации части системы цифрового компьютера и используемой для пояснения, как составные команды могут обрабатываться параллельно многочисленными функциональными блоками обработки команд;
на фиг. 11 - пример конкретной последовательности команд, которая может обрабатываться компьютерной системой на фиг. 10, и на фиг. 12 - таблица, используемая для пояснения обработки последовательности команд на фиг. 11 компьютерной системой на фиг. 10.
На фиг. 1 показан иллюстративный вариант реализации части цифровой компьютерной системы или системы обработки цифровых данных, выполненной в соответствии с настоящим изобретением. Иллюстрируемая компьютерная система способна выполнять две или больше команд параллельно. Она включает в себя иерархически организованную систему памяти, в которой вспомогательные или вторичные запоминающие устройства соединяются с компьютером через шину Вв/Выв. Компьютер соединяется путем сопряжения с шиной Вв/Выв через адаптер, который также соединен с шиной памяти. Основная память и быстродействующая кэш соединены с шиной памяти.
Эта иерархия обычно дает возможность вычислительным компонентам компьютерной системы непосредственно делать выборку или обращаться к содержанию основной памяти и кэш, в то время как адаптер обеспечивает доступ к вспомогательному ЗУ. Команды и данные, которые должны быть выбраны или использованы для поддержки текущих операций компьютера, сохраняются в памяти. Когда они больше не требуются, они возвращаются во вспомогательную память через адаптер, тогда как новые команды и данные вводятся в основную память. Кэш поддерживает быстродействующую выборку со стороны CPU и используется для хранения команд и данных, которые в настоящее время используются или весьма вероятно будут использоваться CPU после текущей операции. Иерархические структуры памяти подробно описаны в главе 7 Операционных систем Дейтеля, второе издание, 1990.
На фиг. 1 показан иллюстративный вариант реализации цифровой компьютерной системы, имеющей иерархически организованную структуру памяти, согласно настоящему изобретению. Эта компьютерная система способна обрабатывать две и больше команд параллельно. Она включает в себя первое средство ЗУ для запоминания команд и данных, подлежащих обработке. Средство ЗУ идентифицировано как основная память 10. Основная память 10 соединена с шиной 9 памяти, имеющей шину 9a адресов и команд и шину 9b текста. Основная память 10 обменивается командами и данными по шине памяти через адаптер 8 Вв/Выв. Адаптер 8 Вв/Выв соединен с шиной 9 памяти и с шиной 7 Вв/Выв. Также предусмотрены одно или больше вспомогательных ЗУ (не показано), которые соединены с шиной 7 Вв/Выв. Адаптер 8 передает данные по шине 7 Вв/Выв путем загрузки информации программы во вспомогательные ЗУ и получения от них информации программы. Адаптер 8 также служит для обмена данными программы по шине 9 памяти с основной памятью 10 путем обеспечения команд и данных для и получения команд и данных от основной памяти по шине 9. Адаптер 8 буферизует команды и данные между шинами 7 и 9, которые имеют разные скорости и форматы. Наконец, адаптер 8 также содержит функции проверки и обнаружения ошибки. Адаптер Вв/Выв, соответствующий компоненту, обозначенному под цифровой позицией 8, является, например, канализованной подсистемой Вв/Выв системы компьютера модели 3080, выпускаемой "Корпорацией IBM", которая является правоприемником настоящей патентной заявки.
Основная память 10 имеет относительно большую емкость, средней скорости средство ЗУ, которое соединено посредством шины 9 памяти с быстродействующей кэш более низкой емкости. Эта кэш обозначена как кэш 12 составных команд.
Компьютерная система на фиг. 1 также содержит средство 11 объединения команд для приема команд от адаптера 8 и взаимодействия с той информацией маркеров составных команд в форме полей маркеров, которая указывает, какие их этих команд могут обрабатываться параллельно. Это средство объединения команд представлено блоком 11 объединения команд. Блок 11 объединения команд анализирует поступающие команды для определения, какие команды могут обрабатываться параллельно. Далее, блок 11 объединения команд образует для этих проанализированных команд маркерную информацию объединения в форме полей маркеров, которые указывают, какие команды могут обрабатываться параллельно друг с другом и какие команды не могут обрабатываться параллельно друг с другом. На фиг. 1 команды обеспечиваются для вычислительной системы из вспомогательного ЗУ посредством адаптера 8, блока 11 объединения команд и основной памяти 10. Основная память 10 принимает и запоминает анализированные команды и связанные с ними маркировочные поля. Основная память 10 обеспечивает затем анализированные команды и их взаимодействующие поля маркеров для кэш 12 составных команд. Кэш 12 имеет меньшую емкость и более высокое быстродействие, чем основная память 10, и является типом, обычно используемым для повышения скорости работы компьютерной системы путем сокращения частоты доступа к основной памяти 10.
Компьютерная система на фиг. 1 также содержит множество функциональных блоков обработки команд. Эти функциональные блоки обработки команд представлены функциональными блоками 13 - 15 и т.д. Эти функциональные блоки 13 - 15 функционируют параллельно друг с другом и одновременным образом, и каждый по своему способен обрабатывать один или больше типов команд на уровне вычислительной машины. Примеры функциональных блоков, которые могут использоваться, включают в себя общего назначения арифметические и логические устройства (АЛУ) и АЛУ типа генерирования адресов, АЛУ типа сокращения зависимости от данных, описанного в одновременно поданной заявке N 07/504.910 (по реестру IBM EN 9-90-014), блок обработки команды перехода, блок сдвига данных, блок обработки плавающей запятой и т.д. Данная компьютерная система может содержать два или больше некоторых этих типов функциональных блоков. Например, данная компьютерная система может два или больше общего назначения АЛУ. Данная компьютерная система может также содержать каждый и каждый по одному из этих разных типов функциональных блоков. Конкретная конфигурация функциональных блоков будет зависеть от природы предлагаемой конкретной компьютерной системы.
Компьютерная система на фиг. 1 также содержит средство выборки и выдача команд, связанное с кэш 12 составных команд, для подачи смежных команд, хранящихся в них, на разные функциональные блоки 13 - 15 обработки команд, когда поля маркеров команд указывают, что они должны быть обработаны параллельно. Это средство представлено блоком 16 выборки и выдачи команд. Блок 16 выборки и выдачи команд выбирает команды из кэш 12, рассматривает их поля маркеров и поля кода операции (ОП-кода) и, основываясь на этом рассмотрении, посылает команды на соответствующий один из функциональных блоков 13 - 15. Если требуемая команда находится в кэш 12 составных команд, соответствующий адрес посылается на кэш 12 для выборки из нее требуемой команды. Это иногда именуется как "ответ кэш". Если требуемая команда не находится в кэш 12, тогда она должна быть выбрана из основной памяти 10 и передана в кэш 12. Это иногда именуется как "пробел кэш". Когда происходит пробел, адрес требуемой команды посылается в основную память 10. В ответ на это основная память 10 начинает передавать или считывать строку команды, которая содержит запрашиваемую команду, вместе с полями маркеров команд в строке.
Пробел кэш принуждает обратиться к основной памяти 10 для определения, содержится ли требуемая команда в памяти 10. Команды обычно хранятся в основной памяти 10 в блоках, именуемых "страницы", и средство управления памятью (не показано) компьютерной системы способно определить из требуемой команды, находится ли страница, содержащая эту команду, в основной памяти. Если такая страница находится в основной памяти, строка, содержащая команду, передается или считывается из основной памяти 10 в кэш 12. Однако, если страница, содержащая запрашиваемую команду, не находится в основной памяти 10, происходит "ошибка из-за отсутствия страницы", что требует пропущенную страницу "выбрать" из вспомогательного ЗУ и поместить в основную память 10. Когда страница выбрана, идентификация пропущенной страницы посылается на адаптер 8, который отыскивает ее и затем обеспечивает ее по шине 9 памяти для хранения в основной памяти 10.
В изобретении страницы, которые выбраны для хранения в основной памяти 10, передаются на вход блока 11 объединения команд, который (блок 11) приступает к анализу этих поступающих команд и образует соответствующее поле маркера для каждой команды. Маркеры и команды после этого подаются на основную память 10 и хранятся в ней для последующего перемещения, если это требуется, в кэш 12 составных команд.
Хотя блок 11 объединения команд показан на фиг. 1 как соединенный между адаптером 8 и основной памятью 10, предполагается, что блок может быть отдельным средством анализа на шине 9 памяти или присоединен на входе к основной памяти 10.
Хранение составных команд в основной памяти 10 может быть реализовано разными способами, из которых некоторые показаны на фиг. 2,A - 2,D. Примеры на фиг. 2,A - 2,D предлагают шину 9b текста шириной 8 байтов плюс дополнительные линии для информации маркеров. Вообще считается, что передача основной памяти основной памятью 10 и кэш 12 составных команд включает в себя линию кэш 64 байта, с одним битом маркера для каждых двух байтов текста команды. Одна линия кэш показана в каждом примере на фиг. 2,A - 2,D. Вообще число маркерных бит определяется максимальным числом объединяемых команд и информацией, возможной для блока 11 объединения команд. Эти соображения изложены в одновременно поданных заявках NN 07/519.382 и 07/504.919 (по реестру IBM IN 9-90-019 и EN 9-90-014).
Простейшая реализация ЗУ маркера с точки зрения управления показана на фиг. 2,A. Если предлагается, что объединение ограничивается двумя командами, требуется минимум однобитный маркер для каждых двух байтов текста команды. Таким образом, для строки, загруженной в память на фиг. 2,A, каждые 64 бит (т. е. каждые восемь байтов) требуют четыре бит информации маркера объединения. Как показано на фиг. 2,A, ЗУ этой информации содержит расширение размера слова от 64 до 68 бит. Другие факультативные биты маркера будут увеличивать размер расширяемых слов.
Второе техническое решение, более совместимое с возможной технологией памяти показано на фиг. 2,B. На фиг. 2,B предусмотрены отдельные памяти текста и маркеров посредством ЗУ команд и информации, связанной с маркерами объединения. На фиг. 2, B память для маркеров функционирует параллельно с памятью для текста. Неявно в структуре памяти на фиг. 2,B есть требование в отношении дополнительного набора линий маркеров, образующих шину маркеров на шине 9 памяти образования параллельного функционирования памяти для текста и для маркеров. Это имеет несколько преимуществ по отношению к техническим решениям типа расширенного слова на фиг. 2A. Во-вторых, память для маркеров может охватывать только часть слов в основной памяти. Операционная система использует некоторые части памяти только в отношении страниц данных (в противоположность страницам команд), маркеры необязательно находятся во всех этих частях. Отличие между страницами данных и команд может быть осуществлено с помощью технических средств, программных средств или реализовано с помощью команд в память маркеров, которые указывают, что определенные страницы содержат только данные и поэтому не требуется адрес страницы в памяти переносить в адрес памяти маркеров в отношении этих страниц. Второе преимущество в том, что память для маркеров может быть устранена при желании для образования более дешевой системы. Это расширяет возможный диапазон эксплуатации в семействе компьютеров. Если требуется больше маркерных бит, как если бы требовалось для большего, чем двунаправленное объединение команд, новая память для маркеров будет заменять память для маркеров на фиг. 2,B без необходимости изменения конструкции основной памяти. Далее, каждая память может быть снабжена своей собственной коррекцией ошибок.
В отношении фиг. 2,A - 2,D следует отметить, что после образования блоком объединения результатов, маркеры объединения сопровождают поток команд в памяти, будь то вставлены в поток, приложены к секциям его или сохраняемые параллельно с ним.
Другие технические решения в отношении реализации ЗУ маркеров показаны на фиг. 2,C и 2,D. На фиг. 2,C первая секция основной памяти содержит таблицы маркеров, и второе ЗУ страницы текста команд. В этом примере требуется поддержка операционной системы, чтобы резервировать часть памяти для таблицы маркеров и пару страниц памяти со страницами маркеров. На фиг. 21 части каждой страницы резервированы для маркеров. Это требует способности в компилирующей программе в отношении конструкций страниц. Например, в случае строк кэш 64 байта компилирующая программа будет использовать 60 байтов для команд и 4 байта для маркеров. На фиг. 2,D маркеры объединены с байтами команд в кэш команд, когда это требует CPU.
Реализация компьютерной системы на фиг. 1 такова, что блок 11 объединения команд может составлять часть адаптера 8 шины. Таким образом, когда страница забирается из системы Вв/Выв, она подвергается неявно процессу объединения в блоке 11 и переводится по шине 9 памяти в основную память 10. Отсюда описание предлагает структуру страницы согласно фиг. 2,A, требующей, чтобы шина 9b текста была шириной 68 бит, и чтобы основная память имела структуру и управлялась для хранения таких страниц, как показано на фиг. 2, A. Конечно, кэш 12 составных команд имеет структуру и управляется с тем, чтобы принимать строки, содержащие расширенные слова, как показано на фиг. 2,A.
В случае ошибки из-за отсутствия страницы страница загружается в страничный буфер в адаптере 8 и обеспечивается для блока 11 объединения команд, как описано ниже. На фиг. 3 двухстраничные буферы 18a и 18b посылают последовательность страниц на блок 11 объединения команд, который предпринимает операции объединения путем добавления информации маркера объединения к командам страницы. Страницы, обработанные блоком 11 объединения, подаются в основную память 10 через буферы 19a и 19b объединенных страниц. Как показано на фиг. 4, блок объединения добавляет время ко времени, необходимому для выборки сегмента текста из вспомогательного ЗУ и вводит это в основную память 10. Однако добавленное время незначительно относительно всего времени, необходимого для операции в целом и не совпадает с CPU.
На фиг. 4 каждый сегмент i передается из вспомогательного ЗУ, такого как накопитель на дисках, на один из страничных буферов 18a или 18bi. Каждый из временных сегментов b указывает время, необходимое для передачи сегмента текста i из страничного буфера в основную память 10. Таким образом, текстовой сегмент i передается за время ai в один из страничных буферов 18a или 18b, вслед за чем текстовой сегмент i + I передается на другой из буферов. Без объединения текстовой сегмент i передается за время bi из страничного буфера, где он в данное время хранится, в основную память. Как показано на фиг. 4, это время существенно короче, чем время, необходимое для выборки страницы в одном из буферов 18a или 18b. При реализации этого изобретения время, необходимое для выполнения операции блока 11 объединения на текстовом сегменте в одном из страничных буферов, плюс время затраченное в буферах 19a или 19b объединения команд, представлено совокупным временем ci. Теперь, на фиг. 4 время bi является временем, которое требуется для передачи текстового сегмента i из страничного буфера в блок 11 объединения. Затем, время объединения с i затрачивается, когда текстовый сегмент подвергается обработке блоком 11 объединения. Как показано на фиг. 4, сумма времени bi и ci меньше, чем время aa. Следует напомнить, что суперскалярная вычислительная машина должна решать в течение времени выполнения команд, могут ли команды выполняться параллельно. Это решение представляет дискретную ступень в выполнении команды, тем самым значительно добавляя ко времени выполнения в суперскалярной вычислительной машине. В противоположность этому, как показано на фиг. 4, объединение в компьютерной системе на фиг. 1 не увеличивает значительно время, необходимое для выполнения операций компьютера. Таким образом, блок 11 объединения команд обеспечивает большую эффективность, чем компьютер, размещенный в блоке выполнения команд.
На фиг. 3 и 4 показаны два принципиальных преимущества объединения в основной памяти. Во-первых, объединение может быть сделано частью асинхронного процесса ошибки из-за отсутствия страницы без увеличения времени для завершения этого процесса. Во-вторых, объединение крупных блоков текста команд, таких как страницы, обеспечивает больший диапазон для выявления объединения, что может привести к более оптимизированному объединению. Последствие этого в том, что блок объединения команд в памяти, такой как показан на фиг. 1, будет обеспечивать преимущества эффективности, так как CPU, так как CPU будет всегда выполнять команды, которые объединены, и объединение может быть лучше оптимизировано, чем когда выполняется синхронно на меньшей секции текста команды.
Операция блока объединения команд будет теперь поясняться со ссылкой на фиг. 5, a. На фиг. 5,a показана часть потока объединенных или маркированных команд, как они могут появиться на выходе блока 11 объединения команд на фиг. 1. Как можно видеть, каждая команда (Коман.) имеет поле маркера, добавленное к ней блоком 11 объединения команд. Маркированные команды, подобно показанным на фиг. 5,a, загружаются в основную память в страничном блоке для страницы, содержащей команды. При необходимости маркированные команды в основном памяти 10 передаются в кэш 12, когда происходит "пробел". После этого маркированные команды в кэш 12 выбираются блоком выборки и выдачи команд 16. Если маркированные команды получены блоком 16 выборки и выдачи, их маркированные поля рассматриваются для определения, могут ли они обрабатываться параллельно, и их поля кода операции (ОП-кода) рассматриваются для определения, какие наличные функциональные блоки наиболее соответствуют для их обработки. Если маркерные поля указывают, что две или больше команд соответствуют для параллельной обработки, тогда они направляются на соответствующий один из функциональных блоков в соответствии с кодированием их полей ОП-кода. Такие команды затем обрабатываются одновременно друг с другом их соответствующими функциональными блоками.
Когда встречается команда, которая не соответствует для параллельной обработки, тогда она направляется на соответствующий функциональный блок, как определено ее ОП-кодом, и после этого обрабатывается единолично посредством самой себя и выбранным функциональным блоком.
В наилучшем случае, когда множество команд всегда обрабатывается параллельно, скорость выполнения команд компьютерной системой будет в N раз больше по сравнению со случаем, когда команды выполняются по одной за один раз, где N является числом команд в группах, которые обрабатываются параллельно.
Поток маркированных команд на фиг. 5,a легче обрабатывать блоком объединения команд, если существуют известные контрольные точки для индикации, где начинается команда. Такая контрольная точка будет обеспечивать точное знание, где проходит граница команды. Во многих компьютерных системах граница команд специально распознается только компилирующей программой во время компилирования и только CPU, когда выбираются команды. Контрольная точка границ неизвестна между временем компилирования и выборкой команд, если не адаптирована специальная контрольная схема границ. Такая схема показана на фиг. 5,b в виде бит B границ команд. Как показано на фиг. 5,b, биты границы могут быть вставлены в поток команд с помощью компилирующей программы во время компилирования для образования контрольной точки в отношении размещения команды непосредственно перед объединением. Вообще, патентные заявки, озаглавленные "Структура вычислительной машины для расширяемых наборов составных команд" и "Общего назначения устройство объединения команд для процессоров параллельной обработки на уровне команд" имеют дело с рассмотрением объединения с текстовыми потоками, в которых границы команд неопределенные. Конечно, когда границы команд могут быть определены из потока текста, если поток содержит только команды, и все команды одинаковой длины, определения границы не требуется.
На фиг. 6 показана более подробно внутренняя конструкция иллюстративного варианта реализации блока объединения команд согласно настоящему изобретению. Этот блок 20 объединения команд соответствует для использования как блок 11 объединения команд на фиг. 1. Блок 20 объединения команд на фиг. 6 выполнен для случая, когда максимум две команды за один раз могут обрабатываться параллельно. Однако это не означает ограничения изобретения только объединением пары команд. В этом примере используется поле маркера 1-бит. Значение бита маркера "1" (один) означает, что команда является "первой" командой. Значение бита маркера "0" (ноль) означает, что команда является "второй" и может выполняться параллельно с предшествующей первой командой. Команда имеющая значение бита маркера 1, может выполняться либо сама по себе, либо одновременно и параллельно со следующей командой в зависимости от значения бита маркера в отношении такой следующей команды.
Каждая пара команд, имеющая значение бита маркера, единицу с последующей командой, имеющей значение бита маркера ноль, образует составную команду для целей параллельной обработки, т.е. команды в такой паре могут обрабатываться параллельно друг с другом. Когда биты маркера в отношении двух последовательных команд имеют каждый значение единица, первая из этих команд выполняется сама по себе непараллельно с другими командами. В наихудшем возможном случае все команды в последовательности будут иметь значение бита маркера единица. В этом наихудшем случае все команды будут выполняться поодиночке за каждый рабочий цикл обработки, непараллельно с другими командами.
На входе в блок 20 объединения команд блок размещения команд принимает от адаптера Вв/Выв поток команд, в котором должны быть произведены объединения. Поток команд может содержать двоичные биты B, как показано на фиг. 5, b. В этом случае размещение команд является просто вопросом определения бит границ и декодирования ОП-кодов команд. Как известно, в наборе команд IBM Система/370 ОП-коды содержат биты, которые дают длину команд в байтах или полусловах. Поэтому после того, как бит В границы идентифицирован в отношении команды, следующая команда может быть безошибочно идентифицирована путем вычисления количества байтов или полуслов от бита границы. Размещение команд не является отличительным признаком настоящего изобретения и должно быть понятно, что границы команд идентифицируются любым известным способом, включая использование двоичных бит.
Блок 20 объединения команд на фиг. 6 включает в себя регистр 21 команд для множества команд для приема множества последовательных команд от страничных буферов 18а и 18b адаптеров. Блок 20 объединения команд также содержит множество средства анализатора команд, которые (средства) основаны на правилах. Каждое такое средство анализатора команд анализирует другую пару смежных команд в регистре 21 команд и генерирует сигнал возможности объединения, который указывает, могут или нет две команды в его паре обрабатываться параллельно. На фиг. 6 показано множество блоков 22-25 анализаторов объединения. Каждый из этих блоков 22-25 анализаторов объединения содержит два упомянутых средства анализатора команд. Таким образом, каждый из этих блоков 22-25 анализаторов образует два сигнала возможности объединения. Например, первый блок 22 анализатора объединения образует первый сигнал возможности объединения M01, который указывает, могут или нет команды 0 и 1 обрабатываться параллельно. Блоки 22 анализаторов объединения также генерируют второй сигнал возможности объединения М12, который указывает, могут или нет команды 1 и 2 обрабатываться параллельно.
Аналогичным образом второй блок 23 анализатора объединения генерирует первый сигнал М23 возможности объединения, который указывает, могут или нет команды 2 и 3 обрабатываться параллельно, и второй сигнал М34 возможности объединения, который указывает, могут ли команды 3 и 4 обрабатываться параллельно. Третий анализатор 24 объединения генерирует первый сигнал возможности объединения М45, который указывает, могут или нет команды 4 и 5 обрабатываться параллельно, и второй сигнал возможности объединения М56, который указывает, могут или нет команды 5 и 6 обрабатываться параллельно. Четвертый анализатор 25 объединения генерирует первый сигнал возможности объединения М67, который указывает, могут или нет команды 6 и 7 обрабатываться параллельно и второй сигнал возможности объединения М78, который указывает, могут ли команды 7 и 8 обрабатываться параллельно.
Блок 20 объединения команд далее содержит средство 26 генерирования маркеров (маркерных знаков), реагирующее на сигналы возможности объединения, появляющиеся на выходах блоков анализатора 22-25, для генерирования индивидуальных полей маркеров для разных команд в регистре 21 команд. Эти маркерные поля Т0, Т1, Т2 и т.д. подаются на регистр 27 маркированных команд, как сами команды, причем последние поступают от входного регистра 21 команд. Таким образом в выходном регистре 27 блока объединения образуется маркерное поле Т0 для команды 0, маркерное поле Т1 для команды 1 и т.д.
В настоящем варианте реализации каждое поле маркера Т0, Т1, Т2 и т.д. состоит из одного двоичного бита (разряд). Значение бита маркера "один" указывает, что непосредственно следующая команда, к которой оно относится, является "первой" командой. Значение бита маркера "ноль" указывает, что непосредственно следующая команда является "второй" командой. Команда, имеющая значение бита маркера единица, следующая за командой, имеющей значение бита маркера ноль, указывает, что эти две команды могут быть выполнены параллельно друг с другом. Маркированные команды в выходном регистре 27 блока объединения подаются на вход основной памяти 10 на фиг. 1 через один или другой буфер объединения 19а или 19b на фиг. 3. Объединенные или составные команды загружаются в основную память 10.
На фиг. 7, показана более подробно внутренняя конструкция, используемая в отношении блока 22 анализатора объединения на фиг. 6. Остальные блоки 23-25 анализатора объединения аналогичной конструкции. Как показано на фиг. 7, анализатор 22 соединения включает в себя логическую схему 30 возможности объединения команд для рассмотрения ОП-кода команды 0 и ОП-кода команды 1 и определения, совместимы ли эти два ОП-кода для целей параллельного выполнения. Логическая схема 30 выполнена в соответствии с заданными правилами для определения, какие пары ОП-кодов совместимы для параллельного выполнения. Более конкретно, логическая схема 30 включает в себя схему по реализации правил, которые определяют, какой тип команд является совместимым для параллельного выполнения в конкретной конфигурации технических средств, используемых в компьютерной системе, рассматриваемой в конкретном случае. Если ОП-коды в отношении команд 0 и 1 являются совместимыми, тогда логическая схема 30 образует на своем выходе сигнал уровня двоичной единицы. Если они несовместимы, логическая схема 30 образует величину двоичного нуля на своем выходе.
Анализатор 22 объединения далее включает в себя вторую логическую схему 31 совместимости команд для рассмотрения ОП-кодов команд 1 и 2 и определения, являются ли они совместимыми для параллельного выполнения. Логическая схема 31 выполнена так же как логическая схема 30 в соответствии с теми же заданными правилами, используемыми для логической схемы 30, для определения, какие пары ОП-кодов совместимы для параллельного выполнения для случая команд 1 и 2. Таким образом, логическая схема 31 включает в себя логическую схему для реализации правил, которые определяют, какие типы команд совместимы для параллельного выполнения; эти правила являются теми же, какие используются в логической схеме 30. Если ОП-коды в отношении команд 1 и 2 являются совместимыми, тогда логическая схема 31 образует выходной сигнал уровня двоичной единицы, в противном случае она образует выходной сигнал уровня двоичного нуля.
Анализатор 22 объединения далее включает в себя первую логическую схему 32 зависимости от регистра для определения конфликтов при использовании регистров общего назначения, определяемых полями R1 и R2 команд 0 и 1. Эти регистры общего назначения будут описаны подробнее здесь ниже. Наряду с другим логическая схема 32 зависимости может быть выполнена для определения ситуации зависимости от данных, при которой вторая команда (команда 1) должна использовать результаты, получаемые в результате выполнения предшествующей команды (команды 0). В этом случае либо вторая команда может выполняться с помощью технических средств сокращения зависимости, тем самым выполняясь параллельно с первой командой, либо выполнение второй команды должно ждать завершения выполнения предшествующей команды и поэтому не может выполняться параллельно с предшествующей командой. (Следует отметить, что способ преодоления некоторых зависимостей от данных типа будет пояснен здесь ниже.) Если нет зависимостей от регистров, которые (зависимости) препятствуют выполнению команд 0 и 1 параллельно, тогда выходная линия логической схемы 32 будет иметь двоичную величину единицу. Если есть зависимость, тогда в этой выходной линии будет двоичная величина ноль.
Анализатор 22 объединения далее включает в себя вторую логическую схему 33 зависимости от регистров для определения конфликтов в использовании регистров общего назначения, определяемых полями R1 и R2 команд 1 и 2. Эта логическая схема 33 такой же конструкции как ранее описанная схема 32, и образует выход уровня двоичной единицы, если нет зависимостей от регистров, или зависимости от регистров могут быть выполнены техническими средствами сокращения зависимости от данных и в остальных случаях выходным сигналом будет уровень двоичного нуля.
Выходные линии от логической схемы 30 совместимости команд и логическая схема 32 зависимости от регистров соединены с двумя входами логической схемы И 34. Выходная линия схемы И 34 имеет величину двоичной единицы, если рассматриваемые два ОП-кода являются совместимыми и если нет регистровых зависимостей. Эта двоичная величина единица на выходной линии схемы И 34 указывает, что две команды, которые рассматриваются, являются совместимыми, т. е. могут выполняться параллельно. Если, с другой стороны, выходная линия схемы И 34 имеет двоичную величину ноль, когда две команды являются несовместимыми. Таким образом, на выходной линии схемы И 34 образуется первый сигнал совместимости М01, который указывает, могут или нет команды 0 и 1 выполняться параллельно. Это сигнал М01 подается на генератор 26 маркеров.
Выходные линии от второй логической схемы 31 совместимости и второй логической схемы 33 зависимости соединены с двумя входами логического элемента И 35. Логический элемент И 35 образует на своей выходной линии второй сигнал М12 совместимости, который имеет двоичную величину единица, если два ОП-кода, которые рассматриваются (ОП-команд 1 и 2) являются совместимыми и если нет зависимостей от регистров у команд 1 и 2 или зависимостей от регистров, которые могут выполняться техническими средствами сокращения зависимости от данных. В остальном выходная линия логического элемента И 35 будет иметь логическую величину ноль. Выходная линия от логического элемента И 35 идет ко второму входу генератора 26 маркеров.
Остальные анализаторы 23-25 объединения, показанные на фиг. 6, являются такой же внутренней конструкции, как показано на фиг. 7 в отношении первого анализатора объединения.
На фиг. 8 показан пример логической схемы, которая может использоваться для реализации анализатора 22 объединения, и часть генератора 26 маркеров, которая используется для генерирования первых трех маркеров, маркера 0, маркера 1 и маркера 2. В отношении примера на фиг. 5 предполагается, что имеется две категории команд, которые обозначены как категория А и категория В. Правила в отношении объединения этих категорий команд являются следующими:
1) А может всегда объединяться с A
2) A никогда не может объединяться с B
3) B никогда не может объединяться с B
4) B может всегда объединяться с A
5) правило (4) преобладает над правилом (1).
Следует отметить, что эти правила чувствительны к порядку появления команд.
Далее также предполагается, что эти правила являются такими, что когда они соблюдаются, то нет проблем с зависимостями от регистра, потому что правила явно указывают, что в случае, когда имеется взаимная блокировка, такая блокировка всегда может быть выполнена с помощью технических средств сокращения зависимости от данных. Иначе говоря, считается, что логические схемы 32 и 33 на фиг. 7 зависимости от регистров не требуются в случае примера на фиг. 8. В этом случае логические элементы И 34 и 35 также не требуются, и выходной сигнал логической схемы 30 становится сигналом М01, и выход логической схемы 31 становится сигналом М12.
В отношении этих предположения фиг. 8 показывает внутреннюю логическую схему, которая может использоваться для логической схемы 30 совместимости команд и логической схемы 31 совместимости команд на фиг. 7. Ссылаясь на фиг. 7, логическая схема 30 совместимости команд включает в себя декодеры 40 и 41, логические элементы И 42 и 43 и логический элемент ИЛИ 44. Вторая логическая схема 31 совместимости команд включает в себя декодеры 41 и 45, логические элементы И 46 и 47 и логический элемент ИЛИ 48. Средний декодер 41 используется совместно логическими схемами 30 и 31.
Первая логическая схема 30 рассматривает ОП-коды ОР0 и OP1 в отношении команд 0 и 1 для определения их совместимости для целей параллельного выполнения. Это производится в соответствии с правилами 1-4, изложенными выше. Декодер 40 рассматривает ОП-код первой команды, и если это ОП-код категории А, выходная линия А декодера 40 устанавливается на уровень единицы. Если ОР0 является ОП-кодом категории В, тогда выходная линия В декодера 40 устанавливается на уровень единицы. Если ОР0 не принадлежат к категории А, ни к категории B, тогда оба выхода декодера 40 находятся на уровне двоичного нуля. Вторая декодер 41 выполняет аналогичный тип декодирования в отношении второго ОП-кода OP1.
Логический элемент И 42 реализует правило 1. Если OP0 является ОП-кодом категории А, и OP1 также является ОП-кодом категории А, тогда логический элемент И 42 образует выход на уровне единицы. Логический элемент И 43 реализует правило 4. Если первый ОП-код является ОП-кодом категории B, и второй ОП-код является ОП-кодом категории А, тогда логический элемент И 43 производит выходной сигнал на уровне единицы. В остальном он образует выходной сигнал уровня ноль. Если любой из логических элементов И 42 или И 43 образует выходной сигнал на уровне единицы, это возбуждает выход логического элемента ИЛИ 44 на уровне единицы, и в этом случае сигнал М01 совместимости имеет величину единицы. Эта величина единицы указывает, что первая и вторая команды (команды 0 и 1) являются совместимыми для целей параллельного выполнения.
Если детектируется любая другая комбинация категорий ОП-кодов декодерами 40 и 41, тогда выходы логических элементов И 42 и 43 остаются на уровне нуля, и сигнал совместимости М01 значение нуля, указывающее на несовместимость. Таким образом, появлению комбинаций, указанных правилами 2 и 3, не удовлетворяют логические элементы И 42 и 43, и М01 остается на уровне нуля. Если имеются другие категории ОП-кодов дополнительно к категориям А и В, их появление в потоке команд не возбуждает выходы декодеров 40 и 42. Поэтому они аналогичным образом ведут к значению сигнала возможности объединения М01 ноль.
Вторая логическая схема 31 совместимости команд проводит аналогичного типа анализ ОП-кода в отношении второй и третьей команд (команды 1 и 2). Если второй ОП-код OP1 является ОП-кодом категории А, и третий ОП-код OP2 является ОП-кодом категории А, тогда согласно правилу 1 логический элемент И 46 образует выходной сигнал на уровне единицы, и второй сигнал М12 совместимости объединения возбуждается до уровня двоичной единицы, указывающий на совместимость объединения. Если OP1 является ОП-кодом категории B, и OP2 является ОП-кодом категории А, тогда согласно правилу 4 логический элемент И 47 возбуждается для образования уровня двоичной единицы в отношении второго сигнала совместимости объединения М 12. В отношении любой комбинации ОП-кодов иного типа, чем изложены в правилах 1 и 4, сигнал М 12 будет иметь величину ноль.
Сигналы совместимости объединения М01 и М12 подаются на генератор 26 маркеров. На фиг. 8 показана логическая схема, которая может использоваться в генераторе 26 маркеров в ответ на сигналы совместимости объединения М01 и М12 для образования требуемых значений бит маркера в отношении маркеров 0,1 и 2. Значение единицы бита маркера указывает, что взаимодействующая команда является "первой" командой для целей параллельного использования. Значение бита маркера ноль указывает, что взаимодействующая команда является "второй" командой для целей параллельного объединения. Одна только команда в паре имеет значение бита маркера ноль. Любая команда, имеющая значение бита маркера единица, за которой следует другая команда, имеющая значение бита маркера единица, выполняется сама по себе единолично, а не параллельно со следующей командой.
В отношении случая первого ряда на фиг. 9, все три бита маркеров имеют значение единица. Это означает, что каждая из команд 0 и 1 выполняется единолично, не параллельно с другой командой. В отношении второго ряда на фиг. 2, команды 0 и 1 будут выполняться параллельно, так как маркер 0 имеет требуемое значение единица, и маркер 1 имеет требуемое значение ноль. В отношении третьего ряда на фиг. 9, команда 0 будет выполняться единолично, в то время как команды 1 и 2 будут выполняться параллельно друг с другом. В отношении четвертого ряда, команды 0 и 1 будут выполняться параллельно друг с другом.
В отношении тех случаев, когда маркер 2 имеет двоичное значение единица, состояние его взаимодействующей команды 2 зависит от двоичного значения маркера 3. Если маркер 3 имеет двоичное значение ноль, тогда команды 2 и 3 могут выполняться параллельно. Если маркер 3 имеет двоичное значение единица, тогда команда 2 будет выполняться единолично, непараллельно с другой командой. Следует отметить, что логическая схема, реализованная в отношении генератора 26 маркеров, не дает возможности появления двух последовательных бит маркеров, имеющих двоичные значения нуля.
Рассмотрение фиг. 9 показывает логическую схему, необходимую для реализации частью генератора 26 маркеров, показанную на фиг. 8. Как показано на фиг. 9, маркер 0 всегда иметь двоичное значение единицы. Это достигается путем образования постоянного двоичного значения единицы на выходной линии 50 генератора маркеров, которая составляет выходную линию маркера 0. Рассмотрение фиг. 9 далее показывает, что значение бита в отношении маркера 1 всегда обратное значение бита сигнала совместимости объединения М01. Этот результата достигается путем соединения выходной линии 51 маркера 1 с выходом логического элемента НЕ 52, вход которого соединен с линией сигнала М01.
Двоичный уровень на выходной линии 53 маркера 2 определяется логическим элементом ИЛИ 54 и логическим элементом НЕ 55. Один вход элемента ИОИ 54 соединен с линией М01. Если М01 имеет значение единицы, тогда маркер 2 имеет значение единицы. Это определяет значения маркера 2 во втором и четвертом рядах на фиг. 9. Другой вход логического элемента ИЛИ 54 соединен посредством логического элемента НЕ 44 с линией сигнала М12. Если М12 имеет двоичное значение ноль, это значение инвертируется элементом НЕ 55 для подачи двоичного значения единицы на второй вход элемента ИЛИ 54. Это побуждает выходную линию 53 маркера 2 иметь двоичное значение единицы. Это определяет значение маркера 2 для ряда один на фиг. 9. Следует отметить, что в отношении случая ряда 3 маркер 2 должен иметь значение нуля. Это все будет происходить по той причине, что в отношении этого случая М01 будет иметь значение нуля, и М12 будет иметь значение единицы, которая инвертирована элементом НЕ 55 для образования нуля на втором входе элемента ИЛИ 54.
Явно в логической схема фиг. 9 имеет место правило приоритезации в случае четвертого ряда, где каждый М01 и М12 имеет двоичное значение единицы. Этот случай четвертого ряда может быть образован последовательностью категорий команд ВАА. Это может быть реализовано путем последовательности маркеров 101 как показано на фиг. 9 или альтернативно последовательностью маркеров 110. В настоящем варианте реализации соблюдается правило 5, и выбрана последовательность 101, показанная на фиг. 9. Иначе говоря, спаривание ВА имеет предпочтение по отношению к спариванию АА.
Образец 1, 1 в отношении 1101 и М12 может быть также образован на последовательности ОП-кода ААА. В этом случае последовательность маркера 102 на фиг. 9 снова выбирается. Это лучше, потому что образует значение единицы для маркера 2, и поэтому потенциально дает возможность объединить команду 2 с командой 3, если команда 2 совместима для выполнения с командой 3.
На фиг. 10 показан подробный пример, как компьютерная система может быть выполнена для использования маркеров объединения согласно настоящему изобретению для образования параллельной обработки команд компьютера на уровне машины. Блок 20 объединения команд, используемый на фиг. 10, предполагается быть типом, описанным на фиг. 6, и как таковой он добавляет к каждой команде поле маркера одного бита. Эти поля маркеров используются для идентификации, какие пары команд могут обрабатываться параллельно. Страницы, содержащие эти маркированные команды, подаются на и загружаются в основную память 10. Если маркированные команды требуются, они считываются или передаются в кэш 12. Управляющий блок 60 выборки/выдачи выбирает маркированные команды из кэш 12, когда требуется, и распределяет для их обработки соответствующим одним или одними из множества функциональных блоков обработки команд 61-64. Блок 60 выборки/выдачи рассматривает поля маркеров и поля ОП-кодов выбранных команд. Если поля маркеров указывают, что две последовательные команды могут быть обработаны параллельно, тогда блок 60 выборки/выдачи присваивает им соответствующие одни из функциональных блоков 61-64, как определено их ОП-кодами, и они обрабатываются параллельно выбранными функциональными блоками. Если поля маркеров указывают, что конкретная команда должна быть обработана единолично, непараллельно с другой командой, тогда блок выборки/выдачи 60 приписывает ее к конкретному функциональному блоку, как определено ее ОП-кодом, и она обрабатывается или выполняется сама по себе.
Первый функциональный блок 61 является блоком обработки команды перехода (ветвления) для обработки команд типа перехода. ("Переход" или "ветвление" в контексте оригинала означает переход от завершения выполнения одной команды к началу выполнения другой в данной последовательности команд - прим. переводчика). Второй функциональный блок 62 является арифметическим и логическим блоком образования трех входных адресов АЛУ), который используется для вычисления адресов памяти в отношении команд, которые передают операнды в или из ЗУ. Третий функциональный блок 63 является арифметическим и логическим блоком (АЛУ) общего назначения, который используется для выполнения операций арифметического и логического типа. Четвертый функциональный блок 64 в настоящем примере является АЛУ сокращения зависимости от данных типа, описанный в вышеназванной одновременно поданной заявке N 07/504.910 (по реестру IBM EN9-90-014). Это АЛУ сокращения зависимости 64 является трехвходным АЛУ, способным выполнять две арифметические/логические операции за один машинный цикл.
Вариант реализации компьютерной системы на фиг. 10 также включает в себя группу общего назначения регистров 65 для использования при выполнении некоторых из команд на уровне машины. Типично эти регистры 65 общего назначения используются для временной загрузки операнд данных и операнд адресов или используются как счетчики или для других целей обработки данных. В типовой компьютерной системе имеется шестнадцать (16) таких регистров общего назначения. В настоящем варианте реализации регистры 65 общего назначения считаются являющимися одним из многоканальных типов, в котором два или больше регистров могут иметь доступ для проведения выборки одновременно.
Компьютерная система на фиг. 10 далее включает в себя быстродействующее средство ЗУ кэш 66 для загрузки операнд данных, полученных от блока 10 ЗУ более высокого уровня. Данные в кэш 66 могут также использоваться для передачи обратно в основную память 10. Кэш 66 данных может быть известного типа, и его функционирование относительно основной памяти 10 может проводиться известным образом.
На фиг. 11 показан пример последовательности объединенных и маркированных команд, которая может быть обработана компьютерной системой на фиг. 10. пример на фиг. 11 составлен из следующих команд в следующей последовательности: загрузить в память, сложить, сравнить, перейти на условие и хранение. Они идентифицированы как команды 11-15 соответственно. Биты маркеров для этих команд есть 1,1,0,1 и 0 соответственно. Исходя из организации машины, показанной на фиг. 10, команда Загрузить выполняется единолично сама собой. Команды Сложить и Сравнить трактуются как составная команда и обрабатываются параллельно друг с другом. Команды Перейти и Сохранить в ЗУ также трактуются как составная команда и также выполняется параллельно друг с другом.
Таблица на фиг. 12 дает дальнейшую информацию по каждой из этих команд на фиг. 11. Колонка R/M на фиг. 12 указывает содержание первого поля в каждой команде, которая типично используется для идентификации конкретного одного из регистров 65 общего назначения, который содержит первый операнд. Исключением является случай команды Перехода на условие, в котором поле R/M содержит маску кода условия. Колонка R/X на фиг. 12 указывает содержание второго поля в каждой команде, которое (поле) типично используется для идентификации второго одного из регистров 65 общего назначения. Такой регистр может содержать второй операнд или может содержать значение индекса адреса (X). В колонке В на фиг. 12 указывается содержание третьего возможного поля в каждой команде, которое (поле) может идентифицировать конкретный один из регистров 65 общего назначения, который содержит значение адреса базы. Нуль в колонке В указывает на отсутствие поля В или отсутствие соответствующего адресного компонента в поле В. Поле D на фиг. 12 указывает содержание дальнейшего поля в каждой команде, которое, когда используется для цели образования адреса, включает в себя значение перемещения адреса. Нуль в колонке D может также указывать на отсутствие соответствующего поля в конкретной рассматриваемой команде или альтернативное значение перемещения адреса ноль.
Рассматривая теперь обработку команд Загрузить в память на фиг. 11, управляющий блок выборки/выдачи 60 определяет из бит маркеров для этой команды Загрузить и следующий команды Сложить, что команда Загрузить должна быть выполнена единолично сама собой. Операция выполняется этой командой Загрузить и состоит в выборке операнда из ЗУ, в этом случае кэш 66 данных и в размещении такого операнда в регистре общего назначения R2. Адресу ЗУ, из которого этот операнд был выбран, определяется путем сложения вместе индексных значений а регистре Х, т.е. базового значения в регистре В и значения перемещения D. Управляющий блок 60 выборки/выдачи приписывает эту операцию образования адреса АЛУ 62 образования адреса. В этом случае АЛУ 62 складывает вместе значение индекса адреса в регистре Х (значение ноль в настоящем примере), значение базового адреса, содержащегося в регистре R7 общего назначения, и значение адреса перемещения (значение нуля в настоящем примере), содержащееся в самой команде. Результирующий вычисленный адрес хранения, появляющийся на выходе АЛУ 62 подается на адресный вход кэш 66 данных для проведения доступа/выборки требуемого операнда. Этот выбранный операнд загружается в регистр Р2 общего назначения в группе регистров 65.
Рассматривая теперь выполнение команд Сложить и Сравнить, эти команды выбираются управляющим блоком 60 выборки/выдачи. Управляющий блок 60 рассматривает маркеры объединения в отношении этих двух команд и отмечает, что они могут быть выполнены параллельно. Как видно на фиг. 12, команда Сравнить имеет явную зависимость от данных команды Сложить, так как команда Сложить должна выполняться до выполнения сравнение Р3. Однако эта зависимость может быть обработана с помощью АЛУ 64 сокращения зависимости от данных. Как следствие, эти две команды могут обрабатываться параллельно в конфигурации на фиг. 10. В частности, управляющий блок 60 назначает обработку команды Сложить блоку АЛУ 63 и назначает обработку команды Сравнить блоку АЛУ 64 сокращения зависимости.
АЛУ 63 складывает содержания регистра R2 общего назначения с содержаниями регистра R3 общего назначения и помещает результат сложения обратно в регистр R3 общего назначения. В то же время АЛУ 64 сокращения зависимости выполняет следующую математическую операцию:
R3+R2-R4
Код условия в отношении результата этой операции посылается в регистр кодов условия, расположенный в блоке 61 перехода. Зависимость от данных сокращается, потому что АЛУ 64 фактически вычисляет сумму R3+R2 и затем сравнивает эту сумму с R4 для определения кода условия. Благодаря этому АЛУ 64 не должно ждать результатов от АЛУ 63, которое выполняет команду Сложить. В этом конкретном случае числовые результаты, вычисляемые АЛУ 64 и появляющиеся на выходе АЛУ 64, не посылаются обратно в регистры 65 общего назначения. В этом случае АЛУ 64 просто устанавливают код условия.
Рассматривая теперь выполнение команды Переход и команды Загрузить в ЗУ, показанное на фиг. 11, эти команды выбираются из кэш 12 составных команд управляющим блоком 60 выборки/выдачи. Управляющий блок 60 определяет из бит маркеров в отношении этих команд, что они могут выполняться параллельно друг с другом. Он далее определяет из ОП-кодов двух команд, что команда Переход должна быть выполнена блоком 61 перехода и команда Загрузить в ЗУ должна быть выполнена АЛУ 62 образования адреса. В соответствии с этим определением поле М маски и поле D перемещения команды Переход посылаются на блок 61 перехода. Аналогичным образом значение индекса адреса в регистре Х и значение базы адреса в регистре В в отношении этой команды Переход получают из регистров 65 общего назначения и подают на блок 61 перехода. В этом примере значение Х является нулем, и значение базы получают из регистра R7 общего назначения. Значение D перемещения имеет шестнадцатиричное значение двадцати, тогда как поле М маски имеет значение положения маски восемь.
Блок 61 перехода начинает вычислять потенциальный адрес перехода (0+R7+20) и в то же время сравнивает код условия, полученный из предшествующей команды Сравнить с маской М кода условия. Если значение кода условия то же самое, как значение кода маски, условие необходимого перехода удовлетворено, и адрес перехода, вычисленный блоком 62 перехода после этого загружается в счетчик команд в управляющем блоке 60. Этот счетчик команд управляет выборкой команд из кэш 12 составных команд. Если условие не удовлетворяется (т. е. код условия, установленный предшествующей командой, не имеет значение восемь) тогда переход на предпринимается, и адрес перехода не посылается на счетчик команд в управляющем блоке 60.
В то же время, когда блок 61 перехода занят осуществлением своих действий для обработки команды Переход, АЛУ 62 образования адреса занят вычислением адреса (0+R7+0) в отношении команды Загрузить в ЗУ. Вычисление адреса блоком АЛУ 62 посылается в кэш 66 данных. Если переход не предпринимается блоком 61 перехода, тогда команда Загрузить в ЗУ функционирует для загрузки операнда в регистре Р3 общего назначения в кэш 66 данных в адрес, вычисленный блоком АЛУ 62. Если условие перехода удовлетворено, и переход предпринят, тогда содержание регистра R3 общего назначения не загружается в кэш 66 данных.
Вышеприведенная последовательность команд на фиг. 11 приведена только как пример. Компьютерная система в варианте реализации на фиг. 10 также способна выполнять разные и различные другие последовательности команд. Однако пример на фиг. 11 четко показывает полезность маркеров составных команд при определении, какие пары команд могут выполняться параллельно друг с другом.
Каждое спаривание команды, имеющей значение бита маркера единицу с последующей командой, имеющей значение бита маркера ноль образует совокупную или составную команду для целей параллельного выполнения или обработки, т.е. команды, в которых пара может обрабатываться параллельно друг с другом. Когда биты маркера в отношении двух последовательных команд, каждая из которых имеет значение единицы, первая из этих команд выполняется как сама по себе, непараллельно с другой командой. В наихудшем возможном случае все команды в последовательности могут иметь значение бита маркера единицу. В этом наихудшем случае все команды будут выполняться по одной за один раз непараллельным образом.
Вышеприведенный пример технических средств в связи с предпочитаемым вариантом реализации этого изобретения объединяет в небольшом объеме. В этом отношении каждая пара смешной команды анализируется для определения, может ли пара быть выполнена параллельно. Фактически, объединение памяти представляет возможность анализа многих объединений свыше семи, два команды, и выбора наилучшего возможного группирования команд.
В вышеприведенных примерах используется способ, который предполагает значение, где начинаются команды. В общем случае границы команд могут быть идентифицированы компьютером, как сказано выше, или путем декодирования команд перед выполнением. Приводится ссылка на одновременно поданные заявки под названием "Структура вычислительной машины с расширяемым набором составных команд" и "Устройство объединения общего назначения для процессоров параллельной обработки на уровне команд".
Наконец, блок объединения команд иллюстрирован, в частности, как расположенный между адаптером Вв/Выв и шиной памяти. Этот пример не означает исключения других вариантов размещения в памяти, в которых может функционировать блок объединения команд. Например, он может быть включен в адаптер Вв/Выв, может функционировать как отдельный блок на шине 9 памяти (при таком расположении он может объединяться с основной памятью 10 или с кэш 12 составных команд), или может содержать блок, соединенный только с основной памятью через конкретный канал памяти, недоступный по шине 9 памяти. Средство объединения может также функционировать между основной памятью и кэш команд, как сказано в одновременно поданной заявке под названием "Предпроцессор объединения для кэш".
Хотя мы здесь описали предпочитаемый вариант реализации нашего изобретения, должно быть понятно, что модификации и адаптации его могут производиться специалистами в этой области техники. Поэтому патентная защита, представляемая нашему изобретению, должна ограничиваться только в соответствии с объемом нижеследующей формулы изобретения.

Claims (6)

1. Цифровой компьютер с возможностью параллельного выполнения двух и более команд, содержащий адаптер, блок выборки и выдачи команд, основную память, быстродействующую память (КЭШ), N блоков обработки команд, отличающийся тем, что в него введено средство объединения команд, причем интерфейс ввода-вывода цифрового компьютера соединен с первым входом-выходом адаптера, выход которого соединен с входом средства объединения команд, вход-выход которого соединен через адресную шину команд с адресным входом основной памяти и с вторым входом-выходом адаптера, вход которого соединен через шину текста с входом-выходом основной памяти, с выходом средства объединения команд, с входом и выходом быстродействующей памяти (КЭШ), выход которой соединен с входом блока выборки и выдачи команд, выход которого соединен через шину функции с входами-выходами всех блоков обработки команд.
2. Компьютер по п.1, отличающийся тем, что выход основной памяти соединен через один из двух буферов с входом адаптера, выход которого соединен через один из двух буферов с входом блока объединения команд, выход которого соединен через один из двух С-буферов с входом основной памяти.
3. Компьютер по п.1, отличающийся тем, что средство объединения команд содержит регистр команд, вход которого соединен с выходом адаптера, а разрядные выходы, соединенные соответственно с входами N анализаторов объединения, соответственно соединены через генератор маркировок с входами регистра маркировок.
4. Компьютер по п.3, отличающийся тем, что анализатор объединения содержит два логических блока совместимости команд и два логических блока зависимости регистра, а также два элемента И, причем выход первого логического блока совместимости команд соединен с первым входом первого элемента И, второй вход которого соединен с выходом первого логического блока зависимости регистра, выходы второго логического блока совместимости команд и второго логического блока зависимости регистров соединены соответственно с первым и вторым входами второго элемента И, входы двух логических блоков совместимости команд и входы двух логических блоков зависимости регистров образуют вход анализатора объединения, а выходы первого и второго элементов И образуют его выход.
5. Компьютер по п.4, отличающийся тем, что логический блок совместимости команд и логический блок зависимости регистров содержат первый декодер, первый выход которого соединен с первым входом первого элемента И, второй вход которого соединен с первым выходом второго декодера, второй выход первого декодера соединен с первым входом второго элемента И, второй вход которого соединен с первым выходом второго декодера, выходы первого и второго элементов И соединены соответственно с первым и вторым входами первого элемента ИЛИ, второй выход второго декодера соединен с первыми входами третьего и четвертого элементов И, вторые входы которых соединены соответственно с первым и вторым выходами третьего декодера, выходы третьего и четвертого элементов И соединены соответственно с первым и вторым входами второго элемента ИЛИ.
6. Компьютер по п.3, отличающийся тем, что i-й (где i = 2, 3, 4) блок обработки команд включает группу регистров общего назначения и быстродействующее ЗУ (КЭШ) данных.
SU4894971A 1990-06-26 1991-04-03 Цифровой компьютер с возможностью параллельного выполнения двух и более команд RU2109333C1 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54346490A 1990-06-26 1990-06-26
US543464 1990-06-26

Publications (1)

Publication Number Publication Date
RU2109333C1 true RU2109333C1 (ru) 1998-04-20

Family

ID=24168174

Family Applications (1)

Application Number Title Priority Date Filing Date
SU4894971A RU2109333C1 (ru) 1990-06-26 1991-04-03 Цифровой компьютер с возможностью параллельного выполнения двух и более команд

Country Status (10)

Country Link
US (2) US5355460A (ru)
EP (1) EP0463296A2 (ru)
JP (1) JPH0778738B2 (ru)
BR (1) BR9102128A (ru)
CA (1) CA2038264C (ru)
CZ (1) CZ280269B6 (ru)
HU (1) HUT57920A (ru)
PL (1) PL165585B1 (ru)
RU (1) RU2109333C1 (ru)
SK (1) SK93491A3 (ru)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
RU2486589C2 (ru) * 2008-08-04 2013-06-27 Аргирис ДИАМАНДИС Конфигурация машиночитаемой формы, система и способ интерпретации, по меньшей мере, одного пользовательского маркировочного знака
RU2620731C1 (ru) * 2016-07-20 2017-05-29 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Способ совместного арифметического и помехоустойчивого кодирования и декодирования

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
JP2642529B2 (ja) * 1991-04-30 1997-08-20 株式会社東芝 並列プロセッサーの命令分配処理装置
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
EP0650612B1 (en) * 1992-03-25 1999-08-18 Zilog Incorporated Fast instruction decoding in a pipeline processor
DE69311330T2 (de) 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5416913A (en) * 1992-07-27 1995-05-16 Intel Corporation Method and apparatus for dependency checking in a multi-pipelined microprocessor
US5590348A (en) * 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5671431A (en) * 1992-09-22 1997-09-23 Siemens Aktiengesellschaft Method for processing user program on a parallel computer system by inserting a tag during compiling
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
JP3531166B2 (ja) 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
JP3182591B2 (ja) * 1993-01-20 2001-07-03 株式会社日立製作所 マイクロプロセッサ
US6154828A (en) * 1993-06-03 2000-11-28 Compaq Computer Corporation Method and apparatus for employing a cycle bit parallel executing instructions
US5504914A (en) * 1993-06-23 1996-04-02 National Science Council Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5819059A (en) * 1995-04-12 1998-10-06 Advanced Micro Devices, Inc. Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
US5931941A (en) * 1995-04-28 1999-08-03 Lsi Logic Corporation Interface for a modularized computational unit to a CPU
US5848288A (en) * 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5826089A (en) * 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
US5958042A (en) 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5845099A (en) * 1996-06-28 1998-12-01 Intel Corporation Length detecting unit for parallel processing of variable sequential instructions
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US5724422A (en) * 1996-08-05 1998-03-03 Industrial Technology Research Institute Encrypting and decrypting instruction boundaries of instructions in a superscalar data processing system
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5898885A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native stack-based instruction within a computer system
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US6134649A (en) * 1997-11-17 2000-10-17 Advanced Micro Devices, Inc. Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
US6167506A (en) 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6118940A (en) * 1997-11-25 2000-09-12 International Business Machines Corp. Method and apparatus for benchmarking byte code sequences
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6061786A (en) * 1998-04-23 2000-05-09 Advanced Micro Devices, Inc. Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
GB2352066B (en) * 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
US6711670B1 (en) * 1999-10-14 2004-03-23 Hewlett-Packard Development Company, L.P. System and method for detecting data hazards within an instruction group of a compiled computer program
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US7039790B1 (en) 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
EP1102165A1 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Microprocessor with execution packet spanning two or more fetch packets
US6618801B1 (en) * 2000-02-02 2003-09-09 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information
DE10043003A1 (de) * 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
KR20020028814A (ko) 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
JP3564445B2 (ja) 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US7269715B2 (en) * 2005-02-03 2007-09-11 International Business Machines Corporation Instruction grouping history on fetch-side dispatch group formation
US7475223B2 (en) * 2005-02-03 2009-01-06 International Business Machines Corporation Fetch-side instruction dispatch group formation
US7664765B2 (en) * 2005-07-12 2010-02-16 Cipherflux, Llc Method for accelerating the computational speed of a computer algorithm
US7562206B2 (en) * 2005-12-30 2009-07-14 Intel Corporation Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions
JP2007272353A (ja) * 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US9354888B2 (en) * 2012-03-28 2016-05-31 International Business Machines Corporation Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
US9348596B2 (en) * 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3401376A (en) * 1965-11-26 1968-09-10 Burroughs Corp Central processor
US4025771A (en) * 1974-03-25 1977-05-24 Hughes Aircraft Company Pipe line high speed signal processor
JPS53108254A (en) * 1977-03-02 1978-09-20 Nec Corp Information processor
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
JPH0769824B2 (ja) * 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Дейтель. Операционная система, 2-е изд-е, 1990, гл.7. *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7966476B2 (en) 2003-06-30 2011-06-21 Intel Corporation Determining length of instruction with escape and addressing form bytes without evaluating opcode
US8161269B2 (en) 2003-06-30 2012-04-17 Intel Corporation Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode
US8402252B2 (en) 2003-06-30 2013-03-19 Intel Corporation Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode
US8793470B2 (en) 2003-06-30 2014-07-29 Intel Corporation Length determination of instruction code with address form field and escape opcode value by evaluating portions other than instruction specific opcode
RU2486589C2 (ru) * 2008-08-04 2013-06-27 Аргирис ДИАМАНДИС Конфигурация машиночитаемой формы, система и способ интерпретации, по меньшей мере, одного пользовательского маркировочного знака
US9349064B2 (en) 2008-08-04 2016-05-24 Intralot S.A.—Integrated Lottery Systems and Services Machine-readable form configuration and system and method for interpreting at least one user mark
RU2620731C1 (ru) * 2016-07-20 2017-05-29 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Способ совместного арифметического и помехоустойчивого кодирования и декодирования

Also Published As

Publication number Publication date
EP0463296A3 (ru) 1994-03-23
PL165585B1 (pl) 1995-01-31
HU911101D0 (en) 1991-10-28
CA2038264C (en) 1995-06-27
PL289724A1 (en) 1992-04-21
CZ280269B6 (cs) 1995-12-13
CZ93491A3 (en) 1995-07-12
US5459844A (en) 1995-10-17
JPH04232532A (ja) 1992-08-20
EP0463296A2 (en) 1992-01-02
JPH0778738B2 (ja) 1995-08-23
SK93491A3 (en) 1995-09-13
HUT57920A (en) 1991-12-30
US5355460A (en) 1994-10-11
BR9102128A (pt) 1991-12-24

Similar Documents

Publication Publication Date Title
RU2109333C1 (ru) Цифровой компьютер с возможностью параллельного выполнения двух и более команд
US5475853A (en) Cache store of instruction pairs with tags to indicate parallel execution
US5313551A (en) Multiport memory bypass under software control
US5561775A (en) Parallel processing apparatus and method capable of processing plural instructions in parallel or successively
US7383421B2 (en) Cellular engine for a data processing system
US5710902A (en) Instruction dependency chain indentifier
US5659722A (en) Multiple condition code branching system in a multi-processor environment
KR100242617B1 (ko) 파이프 라인 컴퓨터 시스템
US5295249A (en) Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
EP0021399A1 (en) A method and a machine for multiple instruction execution
US5692139A (en) VLIW processing device including improved memory for avoiding collisions without an excessive number of ports
US5398321A (en) Microcode generation for a scalable compound instruction set machine
EP0479390A2 (en) Processing device including a memory circuit and a group of functional units
US4541045A (en) Microprocessor architecture employing efficient operand and instruction addressing
US6023751A (en) Computer system and method for evaluating predicates and Boolean expressions
US6871343B1 (en) Central processing apparatus and a compile method
US5940625A (en) Density dependent vector mask operation control apparatus and method
US5293499A (en) Apparatus for executing a RISC store and RI instruction pair in two clock cycles
Craig et al. PIPE: A High Performance VLSI Processor Implementation
Richardson The Fred VHDL Model
Choe et al. A VLSI multistreaming RISC processor
JPH0778737B2 (ja) キャッシュに対する複合化プリプロセッサ方式