Гибридный микропроцессор
Иллюстрации
Показать всеИзобретение относится к области вычислительной техники и может быть использовано в высокопроизводительных микропроцессорных системах. Технический результат заключается в повышении производительности микропроцессора путем обеспечения возможности использования дополнительных инструкций для управления сопроцессорами, в том числе и потоковыми. Технический результат достигается за счет того, что гибридный микропроцессор содержит системный контроллер, кэш-память второго уровня, блок управления памятью, буфер инструкций, целочисленное АЛУ и блок вещественной арифметики, дополнительно снабжен блоком передекодирования инструкций и блоком управления архитектурно-зависимых регистров. 3 ил.
Реферат
Изобретение относится к области вычислительной техники и может быть использовано в высокопроизводительных микропроцессорных системах.
Известен блок декодирования двух наборов команд, входящий в состав ядра процессора, состоящий из двух декодеров команд, каждый из которых предназначен для декодирования своего набора инструкций, и управляющей логики, которая выбирает выход одного или второго декодера в зависимости от флага типа команды для исполнения в конвейере (патент US №5568646, кл. G06F 9/00, опубл. 22.10.1996 г.).
Недостатком блока является использование двух наборов команд, из которых один является поднабором второго (16-разрядный набор инструкций Thumb, являющийся поднабором 32-разрядного ARM).
Известен микропроцессор, содержащий блок преобразования CISC команд архитектуры x86 и RISC команд архитектуры ARM в микроинструкции, определенные для процессора. Блок входит в состав микропроцессора, имеет двухуровневый транслятор инструкций из входного формата во внутренние инструкции, единый исполнительный конвейер и общий регистровый файл, разделенный на 3 части: общие архитектурные регистры, доступные в обоих (x86 и ARM) архитектурах, регистры, специфичные для x86 архитектуры, и регистры, специфичные для ARM архитектуры. При этом регистры из общей (разделяемой) части регистрового файла доступны на чтение и запись инструкциям обоих архитектур (Заявка US №2012/0260065 A1, кл. G06F 9/06, опубл. 11.10.2012 г.).
Недостатком блока является использование двух наборов команд для доступа к разделяемым (общим) ресурсам и возможность одновременного выполнения команд разных архитектур, что трудно реализуемо. Операционные системы не поддерживают одновременного выполнения двух независимых наборов команд на общих регистрах. Использование данного метода невозможно без изменения исходных текстов программ.
Наиболее близким по технической сути и достигаемому результату является гибридный микропроцессор RISC архитектуры, содержащий системный контроллер, кэш-память второго уровня, блок управления памятью, буфер инструкций, целочисленное АЛУ и блок вещественной арифметики (Патент RU №2359315, кл. G06F 9/30, опубл. 20.06.2009 г.).
Недостатком его является то, что описанный гибридный микропроцессор может декодировать только набор команд одной архитектуры.
Техническим результатом от использования данного изобретения является расширение технологических возможностей путем обеспечения поддержки выполнения инструкций нескольких наборов команд RISC архитектур на одном микропроцессоре и повышение производительности микропроцессора путем обеспечения возможности использования дополнительных инструкций для управления сопроцессорами, в том числе и потоковыми.
Указанный технический результат достигается тем, что гибридный микропроцессор, содержащий системный контроллер, кэш-память второго уровня, блок управления памятью, буфер инструкций, целочисленное АЛУ и блок вещественной арифметики, согласно изобретению дополнительно снабжен блоком передекодирования инструкций и блоком управления архитектурно-зависимых регистров, при этом блок передекодирования инструкций связан с кэш-памятью второго уровня, блоком управления памятью для декодирования инструкций в зависимости от текущего режима и блоком управления памятью для передачи ему инструкций, а блок управления архитектурно-зависимых регистров связан с системным контроллером, с буфером инструкций, блоком управления памятью, кэш-памятью второго уровня, целочисленным АЛУ, блоком вещественной арифметики и блоком передекодирования инструкций для осуществления выбора режима работы архитектуры, при выполнении команд, причем связи между блоками осуществляются посредством шин.
Описанная совокупность признаков позволяет достичь указанный технический результат путем поддержки выполнения инструкций нескольких наборов команд RISC архитектур, использования дополнительных сложных инструкций расширенного формата и увеличения количества регистров во внутреннем формате.
Изобретение поясняется чертежами, где на фиг.1 изображена общая схема гибридного микропроцессора, на фиг.2 - блоки передекодирования инструкций, на фиг 3 - блоки управления архитектурно-зависимыми регистрами.
Устройство состоит из буфера инструкций 1, блока управления памятью 2, кэш-памяти второго уровня 3, блока передекодирования инструкций 4, блока выбора архитектуры 5, целочисленного АЛУ 6, блока вещественной арифметики 7 и системного контроллера 8. Буфер инструкций 1 связан с блоком управления памятью 2 для запроса инструкций интерфейсом 9 и с блоками 2, 5, 6 и 7 для выдачи инструкций на выполнение интерфейсом 10. Блок управления памятью 2 связан шинами 11 для запроса данных/инструкций и 12 для получения данных из кэш-памяти второго уровня 3; шиной 13 с блоком передекодирования инструкций 4 для получения инструкций; шиной 14 с блоком вещественной арифметики 7 для обмена данными между блоками; интерфейсом 15 с системным контроллером 8 для реализации протокола когерентности; шиной 16 с блоком целочисленного АЛУ 6 для обмена данными между блоками; шиной 17 с блоком выбора архитектуры 5 для задания режима работы при выполнении архитектурно-зависимых команд; шиной 18 с блоком выбора архитектуры 5 для передачи данных. Кэш-память второго уровня 3 также связана интерфейсом 19 с системным контроллером 8 для реализации канала прямого доступа к памяти; дополнительной шиной данных 20 с блоком вещественной арифметики 7 для обмена данными при работе с накристальной памятью; с блоком выбора архитектуры 5: шиной 17 для задания режима работы при выполнении архитектурно-зависимых команд и шиной 21 для передачи данных; шиной 22 с блоком передекодирования инструкций 4 для выдачи инструкций. Блок передекодирования инструкций 4 также связан с блоком выбора архитектуры 5 шиной 17 для задания режима работы блока. Блок целочисленного АЛУ 6 также связан с блоком выбора архитектуры 5: шиной 17 для задания режима работы при выполнении архитектурно-зависимых команд и шиной 23 для передачи данных; шиной 24 с блоком вещественной арифметики 7 для обмена данными между блоками. Блок вещественной арифметики 7 также связан с блоком выбора архитектуры 5 шиной 17 для задания режима работы при выполнении архитектурно-зависимых команд и шиной 25 для передачи данных. Системный контроллер 8 также связан с блоком выбора архитектуры 5 шиной 26 для передачи в блок системных установок режима работы.
Блок передекодирования инструкций 4 состоит из модуля трансляции инструкций архитектуры N127 и модуля трансляции инструкций архитектуры Nk28, подключенных к общей входной шине 22 и работающих параллельно, выходы которых соединены соответственно шинами 29 и 30 с выходным мультиплексором 31, управляемым с помощью входной шины 17. Выход мультиплексора 31 соединен с выходной шиной 13.
Блок выбора архитектуры 5 состоит из регистра режима декодирования 32, архитектурно-зависимых регистров архитектуры N133 и архитектурно-зависимых регистров архитектуры Nk34, декодера инструкций 35, схемы изменения данных регистра режима 36, схемы выбора адреса регистра данных 37, схемы выбора входных данных 38, мультиплексора выбора выходных данных 39 и схемы формирования выходных данных 40. Регистр режима декодирования 32 связан шиной 41 со схемой изменения данных регистра режима 36 и выходной шиной 17 со схемой выбора адреса регистра данных 37 и мультиплексором выбора выходных данных 39. Архитектурно-зависимые регистры архитектуры N133 и архитектурно-зависимых регистров архитектуры Nk34 связаны со схемой выбора адреса регистра данных 37 соответственно шинами 42 и 43; со схемой выбора входных данных 38 соответственно шинами 44 и 45; с мультиплексором выбора выходных данных 39 соответственно шинами 46 и 47. Декодер инструкций 35 связан с входной шиной 10; шиной 48 связан со схемой изменения данных регистра режима 36; шиной 49 со схемами выбора адреса регистра данных 37 и выбора входных данных 38. Схема изменения данных регистра режима 36 также связана с входной шиной 26. Схема выбора входных данных 38 также связана с входными интерфейсами шинам 18, 21, 23 и 25. Схема формирования выходных данных 40 связана с выходом мультиплексора выбора выходных данных 39 шиной 50 и выходными интерфейсами шин 18, 21, 23 и 25.
Количество модулей трансляции инструкций архитектур и архитектурно-зависимых регистров зависит от количества поддерживаемых архитектур.
Механизм использования нескольких наборов команд с использованием блоков передекодирования инструкций 4 и блока выбора архитектуры 5 работает следующим образом.
Работу устройства можно разделить на 2 независимых параллельных процесса: запрос инструкций и их выполнение. Процесс запроса инструкций выполняется следующим образом. Буфер инструкций 1, используя стандартный протокол запроса инструкций, по интерфейсу 9 запрашивает инструкции в кэш-памяти инструкций, входящей в состав блока управления памятью 2. В случае отсутствия инструкций в кэш-памяти инструкций запрос от блока управления памятью 2 по шине 11 передается в кэш-память второго уровня 3. В случае отсутствия инструкций в кэш-памяти второго уровня 3 запрос передается в системный контроллер 8, используя шину 19, по которой с использованием стандартных протоколов обмена к системному контроллеру 8 передается запрос, а к кэш-памяти второго уровня 3 - считанные инструкции. Считанные системным контроллером 8 инструкции записываются в кэш-память второго уровня 3 и передаются по шине 22 в блок передекодирования инструкций 4, который производит их преобразование во внутренний формат и выдает их по шине 13 в блок управления памятью 2. После записи в кэш-память инструкций блока управления памятью 2 инструкции передаются по шине 9 в буфер инструкций 1, который их запрашивал.
Преобразование инструкций во внутренний формат заключается в изменении битовой кодировки инструкций, и, в случае необходимости, изменение порядка следования полей инструкции и/или изменение номеров архитектурных регистров на номера физических регистров, используемых для хранения определенных в архитектуре данных. Размер кода инструкции при этом увеличивается, дополнительные биты используются для расширения количества кодируемых команд и количества физических регистров. Это дает возможность использования команд нескольких архитектур в одном процессоре. Блок передекодирования инструкций 4 работает следующим образом. Поступающие из кэш-памяти второго уровня 3 инструкции по шине 22 подаются на параллельно работающие модуль трансляции инструкций архитектур N127 и модуль трансляции инструкций архитектур N128, которые декодируют инструкции по правилам соответствующих архитектур и транслируют их во внутреннее представление, заменяя, в случае необходимости, используемые в инструкциях номера архитектурных регистров на физические. Инструкции во внутренней кодировке с выходов модуля трансляции инструкций архитектуры N127 и модуля трансляции инструкций архитектуры Nk28 по шинам 29 и 30 соответственно поступают на вход мультиплексора 31, который управляется шиной 17, указывающей используемую в настоящий момент архитектуру. В соответствии со значением на управляющей шине 17 мультиплексор 31 выбирает для передачи на выходную шину 13 инструкции, преобразованные модулем трансляции инструкций архитектуры N127 или модулем трансляции инструкций архитектуры 28. В результате инструкции, считанные из системного контроллера 8, сохраняются в кэш-памяти второго уровня 3 в исходной кодировке, определяемой архитектурой команд; в кэш-памяти инструкций первого уровня, входящей в состав блока управления памятью 2, во внутренней кодировке; в буфере инструкций 1 и при выдаче их на выполнение - во внутренней кодировке.
После получения инструкций буфером инструкций 1 начинается их выполнение. Процесс выполнения инструкций осуществляется следующим образом. Инструкции из буфера инструкций 1 во внутренней кодировке выдаются на шину 10 и поступают на исполнение в блок управления памятью 2, блок выбора архитектуры 5, целочисленное АЛУ 6 и блок вещественной арифметики 7. Исполнительные блоки управления памятью 2, целочисленного АЛУ 6 и блок вещественной арифметики 7, получив инструкции, начинают их декодирование и выполнение. Для обмена данными между блоками используются шины, связывающие блоки между собой. Целочисленное АЛУ 6 может передавать и считывать данные кэш-памяти первого уровня, входящей в состав блока управления памятью 2, по шине 16 и регистрового файла блока вещественной арифметики 7 по шине 24. Блок вещественной арифметики 7 может передавать и считывать данные кэш-памяти первого уровня, входящей в состав блока управления памятью 2, по шине 14, из кэш-памяти второго уровня 3 по шине 20 и регистрового файла целочисленного АЛУ 6 по шине 24. Блок управления памятью 2 передает и принимает данные от целочисленного АЛУ 6 по шине 16 и блока вещественной арифметики 7 по шине 14. Если запрошенных данных нет в кэш-памяти первого уровня, входящей в состав блока управления памятью 2, блок выставляет запрос на шину 11 на чтение этих данных из кэш-памяти второго уровня 3. В случае отсутствия данных в кэш-памяти второго уровня 3 запрос передается в системный контроллер 8, используя шину 19, по которой с использованием стандартных протоколов обмена к системному контроллеру 8 передается запрос, а к кэш-памяти второго уровня 3 - считанные данные. Считанные системным контроллером 8 данные записываются в кэш-память второго уровня 3 и передаются по шине 12 в блок управления памятью 2. После записи в кэш-память данных блока управления памятью 2 инструкции передаются по шинам 14 и 16 в блок, который их запрашивал. Такой же механизм запроса данных используется блоком управления памятью 2 при выполнении команд управления кэш-памятями, полученных по шине 10 от буфера инструкций 1.
Используемые инструкциями регистры делятся на две категории: регистровые файлы, входящие в состав целочисленного АЛУ 6 и блока вещественной арифметики 7; управляющие и контрольные регистры. Доступ к регистровым файлам не изменяется, объем реализуемых в аппаратуре регистров соответствует максимальному размеру регистрового файла в поддерживаемых архитектурах. Управляющие и контрольные регистры разделяются на общие для обеих поддерживаемых архитектур (архитектурно-независимые регистры) и уникальные для каждой из них (архитектурно-зависимые регистры). Архитектурно-независимые регистры не изменяются, они остаются в тех же блоках, где они определены в архитектурах, могут меняться их физические номера. Архитектурно-зависимые регистры объединяются в блок выбора архитектуры 5. Для каждой из поддерживаемых архитектур в блоке выбора архитектуры 5 находятся собственные физические регистры для хранения данных, которые могут читаться и записываться определенными в архитектурах командами при их выполнении. Для этого используются независимые шины между блоком выбора архитектуры 5 и блоками, выполняющими инструкции: блоком управления памятью 2, кэш-памятью второго уровня 3, целочисленным АЛУ 6 и блоком вещественной арифметики 7 (используя шины 18, 21, 23 и 26 соответственно). Исполнительные блоки и блок выбора архитектуры 5 работают параллельно, выполняя инструкции с шины 10, при декодировании которых определяется, какие регистры какого блока инструкция будет использовать. Данные для записи в архитектурно-зависимые регистры передаются из исполнительных блоков на вход блока выбора архитектуры 5. Данные для чтения передаются из блока выбора архитектуры 5 на входы исполнительных блоков.
Блок выбора архитектуры 5 работает следующим образом. Инструкции поступают в блок по шине 10 и подаются на вход декодера инструкций 10, который производит первичное декодирование инструкции, определяя инструкции чтения/записи архитектурно-зависимых регистров, находящихся в блоке, и инструкции, изменяющие режим декодирования архитектуры (влияющие на регистр режима декодирования 32). В случае декодирования инструкций чтения/записи они по шине 49 передаются схеме выбора адреса регистров данных 37 и схеме выбора входных данных 38. На основании типа инструкции, полученного от декодера инструкций 35, в схеме выбора адреса регистров данных 37 читаются необходимые битовые поля и формируются стробы управления для записи данных в архитектурно-зависимые регистры архитектуры N133 и архитектурно-зависимые регистры архитектуры Nk34 (если была декодирована команда записи). Чтение из архитектурно-зависимых регистров архитектуры N133 и архитектурно-зависимых регистров архитектуры Nk34 происходит для любого типа команды. Схема выбора входных данных 38 на основании типа инструкции, полученного по шине 49 от декодера инструкций 35, мультиплексирует данные с входных шин 18, 21, 23 и 25, выбирая данные для записи в архитектурно-зависимые регистры архитектуры N133 и архитектурно-зависимые регистры архитектуры Nk34. В результате, для каждого набора архитектурно-зависимых регистров формируются данные для записи и адрес с сигналами управления записью. Архитектурно-зависимые регистры архитектуры N133 получают управление и адреса по шине 42 и данные по шине 44 с выходов схемы выбора адреса регистров данных 37 и схемы выбора входных данных 38 соответственно. Архитектурно-зависимые регистры архитектуры Nk34 получают управление и адреса по шине 43 и данные по шине 45 с выходов схемы выбора адреса регистров данных 37 и схемы выбора входных данных 38 соответственно. По полученному адресу читается текущее значение регистра, при разрешении записи в регистры записываются входные данные. Данные, считанные из архитектурно-зависимых регистров архитектуры N133 и архитектурно-зависимых регистров архитектуры Nk34, по шинам 46 и 47 соответственно поступают на вход мультиплексора 39, который выбирает данные для выхода на основании значения регистра режима декодирования 32. Данные с выхода мультиплексора 39 по шине 50 поступают на вход схемы формирования выходных данных 40, которая на основании типа инструкции, полученного по шине 51 от декодера инструкций 35, передает данные на одну из выходных шин 18, 21, 23 или 25, по которым они поступают на входы исполнительных устройств. Кроме этого значение регистра режима декодирования 32 передается на шину 17, с которой его могут получать остальные блоки устройства, если это необходимо для их работы (как в случае с блоком передекодирования инструкций 4).
Изменение значения регистра режима декодирования 32 реализуется схемой изменения данных регистра режима 36, которая передает новое значение и строб записи в регистр режима декодирования 32 по шине 41. Изменение значения может быть произведено либо выполнением команды записи в этот регистр, либо выполнением определенной последовательности команд, либо указывается системным контроллером 8. Команды поступают в схему изменения данных регистра режима 36 по шине 48 из декодера инструкций 35, где анализируются, и в случае необходимости по шине 41 выставляется команда записи в регистр режима декодирования 32 нового значения. Данные из системного контроллера 8 поступают по шине 26 и используются для безусловного обновления в регистре режима декодирования 32. Таким образом, выбранная для работы архитектура может быть изменена системным контроллером напрямую, без выполнения каких-либо инструкций процессора.
Фактически, значение регистра режима декодирования 32 указывает на используемую в настоящий момент архитектуру и определяет, какой набор архитектурно-зависимых регистров архитектуры N133 или архитектурно-зависимых регистров архитектуры Nk34 используется для работы. При записи данных в регистры это определяется в схеме выбора адреса регистров данных 37, которая выдает разрешение записи только на регистры используемой архитектуры, оставляя неизменными регистры другой архитектуры даже при выполнении команд записи. При чтении данные выбираются мультиплексором 39. Таким образом, при одном значении регистра режима декодирования 32 будет читаться и записываться один набор архитектурно-зависимых регистров, при другом - другой.
Гибридный микропроцессор, содержащий системный контроллер, кэш-память второго уровня, блок управления памятью, буфер инструкций, целочисленное АЛУ и блок вещественной арифметики, отличающийся тем, что микропроцессор дополнительно снабжен блоком передекодирования инструкций и блоком выбора архитектуры, при этом блок передекодирования инструкций выполнен в виде наборов модулей трансляции инструкций архитектур и связан с кэш-памятью второго уровня и блоком управления памятью для выполнения процесса запроса инструкций и преобразования их во внутренний формат, а блок выбора архитектуры выполнен в виде наборов архитектурно-зависимых регистров архитектур и связан с системным контроллером, с буфером инструкций, блоком управления памятью, кэш-памятью второго уровня, целочисленным АЛУ, блоком вещественной арифметики и блоком передекодирования инструкций для декодирования инструкций в зависимости от текущего режима и передачи в блок управления памятью, причем блок выбора архитектуры связан с блоком передекодирования инструкций для управления режимом работы последнего.