Процессор и способ осуществления операций непрямого чтения и записи регистра
Иллюстрации
Показать всеИзобретение относится к процессору и способу осуществления операций непрямого чтения данных из регистра и записи данных в регистр. Техническим результатом является расширение функциональных возможностей. Способ записи выходного значения регистра заключается в приеме первой команды программы, включающей в себя первое исходное поле, имеющее первое индексированное значение, и первое конечное поле, имеющее второе индексированное значение; обработке первой команды во множестве блоков выполнения; считывании первого индексированного значения для использования в качестве первого индекса по меньшей мере одного регистрового файла, которое идентифицирует первое положение в по меньшей мере одном регистровом файле; извлечении первого выходного значения регистра, выполнении операции над первым выходным значением регистра для получения первого результата; записи этого результата во второе положение по меньшей мере одного регистрового файла, основываясь на третьем индексированном значении, которое определяется путем извлечения второго выходного значения регистра из третьего положения по меньшей мере одного регистрового файла, основываясь на втором индексированном значении; выполнении операции над вторым выходным значением регистра для определения третьего индексированного значения. 3 н. и 15 з.п. ф-лы, 4 ил.
Реферат
Область техники, к которой относится изобретение
Данное изобретение относится, в целом, к процессорам и, в частности, к процессору и способу осуществления операций непрямого чтения и записи регистра.
Уровень техники
Цифровые сигнальные процессоры представляют собой специализированные процессоры, способные выполнять математические операции с высокой скоростью. Цифровые сигнальные процессоры (ЦСП) можно использовать для обработки изображений, обработки аудиосигналов, обработки видеосигналов и для многих других целей. Цифровые сигнальные процессоры обычно входят в состав разнообразных устройств, например мобильных телефонов, карманных персональных компьютеров, фотоаппаратов, видеокамер и портативных вычислительных систем. Для увеличения скорости выполнения некоторые цифровые сигнальные процессоры имеют многопотоковую архитектуру с перемежением, позволяющую поддерживать одновременное выполнение нескольких аппаратных потоков. Команды от нескольких потоков перемежаются в конвейере выполнения. Эта архитектура позволяет использовать агрессивную тактовую частоту и одновременно поддерживать высокую эффективность использования ядра и памяти.
Сущность изобретения
Здесь описаны способ и система для осуществления доступа к значениям, хранящимся в любом регистре, с использованием значения другого регистра в качестве индекса регистра. Значения могут храниться в регистрах с возможностью такого доступа для использования в вычислениях и других операциях без обращения к памяти.
Согласно одному аспекту варианта осуществления изобретения, способ содержит этапы, на которых обращаются к первому регистру на основании команды программы и получают выходное значение первого регистра, обращаются ко второму регистру на основании выходного значения первого регистра, получают выходное значение второго регистра и сохраняют выходное значение второго регистра в третьем регистре на основании команды программы.
Согласно другому аспекту варианта осуществления изобретения, способ содержит этапы, на которых считывают значение из исходного поля команды программы, обращаются к первому регистру на основании значения исходного поля и получают выходное значение первого регистра, в необязательном порядке осуществляют первую математическую/логическую операцию над выходным значением первого регистра, обращаются ко второму регистру на основании результата первой математической/логической операции и получают выходное значение второго регистра, в необязательном порядке осуществляют вторую математическую/логическую операцию над выходным значением второго регистра, считывают значение из конечного поля команды программы и сохраняют результат второй математической/логической операции в третьем регистре на основании значения конечного поля.
Согласно другому аспекту варианта осуществления изобретения, предусмотрен компьютерно-считываемый носитель, на котором закодирован процесс, подлежащий выполнению на цифровом сигнальном процессоре. Процесс содержит обращение к первому регистру на основании команды программы и получение выходного значения первого регистра, обращение ко второму регистру на основании выходного значения первого регистра и получение выходного значения второго регистра и сохранение выходного значения второго регистра в третьем регистре на основании команды программы.
Согласно еще одному аспекту варианта осуществления изобретения, процессор содержит средство доступа к первому регистру на основании команды программы и получения выходного значения первого регистра, средство доступа ко второму регистру на основании выходного значения первого регистра и получения выходного значения второго регистра и средство сохранения выходного значения второго регистра в третьем регистре на основании команды программы.
Согласно еще одному аспекту варианта осуществления изобретения, способ содержит этапы, на которых обращаются к первому регистру на основании команды программы и получают выходное значение первого регистра, обращаются ко второму регистру на основании команды программы и получают выходное значение второго регистра и сохраняют выходное значение первого регистра в третьем регистре на основании выходного значения второго регистра.
Согласно еще одному аспекту варианта осуществления изобретения, предусмотрен компьютерно-считываемый носитель, на котором закодирован способ, содержащий этапы, на которых обращаются к первому регистру на основании команды программы и получают выходное значение первого регистра, обращаются ко второму регистру на основании команды программы и получают выходное значение второго регистра и сохраняют выходное значение первого регистра в третьем регистре на основании выходного значения второго регистра.
Согласно еще одному аспекту варианта осуществления изобретения, процессор содержит средство доступа к первому регистру на основании команды программы и получения выходного значения первого регистра, средство доступа ко второму регистру на основании команды программы и получения выходного значения второго регистра и средство сохранения выходного значения первого регистра в третьем регистре на основании выходного значения второго регистра.
Согласно еще одному аспекту варианта осуществления изобретения, процессор содержит первый блок выполнения, способный обращаться к первому регистру на основании команды программы и получать выходное значение первого регистра, и второй блок выполнения, способный обращаться ко второму регистру на основании выходного значения первого регистра, получать выходное значение второго регистра и сохранять выходное значение второго регистра в третьем регистре на основании команды программы.
Краткое описание чертежей
Более полное понимание этого раскрытия можно получить, обратившись к прилагаемым чертежам, рассматриваемым совместно с нижеследующим подробным описанием.
Фиг.1 - упрощенная схема последовательности операций согласно варианту осуществления процессорного конвейера.
Фиг.2 - упрощенная временная диаграмма многопотокового выполнения с перемежением процессорного конвейера.
Фиг.3 - схема последовательности операций согласно варианту осуществления процесса непрямого чтения.
Фиг.4 - схема последовательности операций согласно варианту осуществления процесса непрямой записи.
Осуществление изобретения
На фиг.1 показана упрощенная схема последовательности операций согласно варианту осуществления процессорного конвейера 10. Процессорный конвейер 10 можно реализовать на цифровом сигнальном процессоре, предназначенном для математических операций, или на процессоре общего назначения. В одном варианте осуществления, процессорный конвейер 10 имеет многопотоковую архитектуру с перемежением, которая позволяет, по существу, одновременно выполнять шесть потоков. Процессорный конвейер 10 содержит командный блок 12 памяти, содержащий шесть потоков. Команды программы выбираются из командного кэша 14. Затем логика 16 управления и предварительного декодирования команд может разрешать зависимости данных и конфликты ресурсов, закодированные в некоторых заранее определенных битах в командах, и направлять команды в конкретные блоки выполнения. Затем команды программы считываются в очередь 18 команд, ожидающих выполнения. Согласно варианту осуществления цифрового сигнального процессора, каждая команда программы представляет собой пакет команд, содержащий четыре отдельные команды. Каждая команда может содержать одно или несколько исходных полей, каждое из которых может содержать индекс для регистрового файла, позволяющий считывать значение, используемое при выполнении команды. Регистровый файл можно рассматривать как массив регистров, доступный по индексу для регистрового файла. Затем производится операция 20 чтения регистрового файла для считывания операндов, необходимых для выполнения команды для потока. Совокупность блоков 22 выполнения, например четыре в этом варианте осуществления, для выполнения каждой из четырех команд в пакете команд, способны осуществлять выполнение команды программы. Затем производится операция 24 записи регистрового файла для сохранения результатов выполнения.
На фиг.2 показана упрощенная временная диаграмма многопотокового выполнения с перемежением. Многопотоковая архитектура с перемежением процессорного конвейера 10 позволяет, по существу, одновременно выполнять шесть команд из шести потоков 31-36 (T1-T6). Согласно показанному варианту осуществления цифрового сигнального процессора, каждая команда программы представляет собой пакет команд, содержащий четыре отдельные команды. Каждый пакет команд может выполняться за семь периодов тактовых импульсов, например для декодирования (период тактовых импульсов C1), чтения операций из регистрового файла (период тактовых импульсов C2), выполнения четырех команд (периоды тактовых импульсов C3-C6) и, наконец, записи результатов в регистровый файл (период тактовых импульсов C1). В то время как пакет команд из первого потока декодируется, после чего операнды считываются из регистрового файла, декодируется второй пакет команд. В таком режиме работы начало выполнения каждого следующего пакета команд отстает от предыдущего пакета команд на один период тактовых импульсов. Преимущества такого режима выполнения процессорного конвейера позволяют обеспечить ранее недостижимую эффективность работы. Прежде было невозможно осуществлять непрямую операцию чтения для считывания значения из регистрового файла и использования его в качестве индекса для того же регистрового файла для поиска значения, используемого в операции. Также было невозможно осуществлять непрямую операцию записи для записи результата в регистровый файл в месте, индексированном значением, считанным из регистрового файла. Логика для реализации непрямого/й чтения/записи регистрового файла была бы слишком дорогой и сложной для реализации. Эти операции в настоящее время можно осуществлять благодаря дополнительному времени, доступному для выполнения команды в потоке, в то время как выполняются другие потоки.
На фиг.3 показана схема последовательности операций согласно варианту осуществления процесса непрямого чтения. Команда 40 программы может включать в себя конечное поле 42 и исходное поле 44. Значение в исходном поле 44 сначала считывается и используется в качестве индекса 46 для регистрового файла 48. Значение в положении в регистровом файле 48, указанном индексом 46, считывается из регистрового файла 48, и выходное значение регистра 50 может использоваться в математической или логической операции 52. Математическая или логическая операция 52 может, например, быть операцией сложения, вычитания, умножения, деления, логической операцией И (или НЕ-И), логической операцией ИЛИ (или НЕ-ИЛИ), логической операцией ИСКЛЮЧАЮЩЕГО ИЛИ, операцией битового маскирования (например, для маскирования нескольких старших или младших битов). Операция выдает результат, который затем используется в качестве индекса 54 для регистрового файла 48. Выходное значение 56 регистра, считанное из регистрового файла 48, затем используется в другой математической или логической операции 58, и ее результат 60 записывается в регистровый файл 48 в положение, индексируемое значением индекса 62, считанным из конечного поля 42 команды 40. В вышеприведенном описании математические или логические операции 52 и/или 58 могут быть необязательными этапами. Непрямая операция чтения может иметь множественные итерации чтения регистра для получения индекса для регистрового файла для получения другого значения, которое, в свою очередь, может использоваться как операнд или другой индекс регистра. Эту последовательность операций можно реализовать аппаратными, программными или комбинированными средствами.
На фиг.4 показана схема последовательности операций согласно варианту осуществления процесса непрямой записи. Команда 70 программы включает в себя исходное поле 72, значение которого используется в качестве индекса 74 для регистрового файла 76. Выходное значение 78 регистра, хранящееся в положении, индексированном индексом 74, считывается для использования в математической или логической операции 80. Затем результат 82 записывается в регистровый файл 76 в положении, указанном индексом 92, определенным считыванием значения индекса 86 из конечного поля 84 команды 70 программы и используемым для чтения поля 76 регистра. Выходное значение регистра 88, считанное из регистрового файла 76, затем используется в математической или логической операции 90. Затем результат этой операции используется в качестве индекса для регистрового файла 76 для сохранения результата операции 80. Таким образом, непрямая операция записи может иметь множественные итерации чтения регистра для получения индекса для регистрового файла для получения другого значения, которое, в свою очередь, может использоваться как операнд или другой индекс регистра, указывающий положение для сохранения результата. Эту последовательность операций можно реализовать аппаратными, программными или комбинированными средствами.
Из вышеприведенного описания следует, что, давая создателям программного кода возможность извлекать и сохранять значение в любом регистре на основании значений, хранящихся в регистрах, можно обеспечить повышенную гибкость манипулирования программной логикой. Появляется возможность доступа к совокупности значений, хранящихся в регистрах, даже, когда шаблон доступа на этапе компиляции не известен. Прежде было трудно или неудобно обращаться к значениям, хранящимся в регистрах, на основании значения регистра.
Хотя варианты осуществления настоящего раскрытия были описаны подробно, специалисты в данной области техники могут предложить различные изменения, замены и модификации, не выходящие за рамки сущности и объема настоящего изобретения. Соответственно, все подобные изменения, замены и модификации следует рассматривать как входящие в объем настоящего изобретения, который определен нижеприведенной формулой изобретения. Формула изобретения охватывает описанные здесь структуры как осуществляющие указанные функции и не только структурные эквиваленты, но и эквивалентные структуры.
1. Устройство для записи выходного значения регистра, содержащее многопотоковый процессор с перемежением, содержащий по меньшей мере один регистровый файл, множество блоков выполнения, соединенных с по меньшей мере одним регистровым файлом, при этом многопотоковый процессор с перемежением выполнен с возможностью: принимать первую команду программы, включающую в себя первое исходное поле, имеющее первое индексированное значение, и первое конечное поле, имеющее второе индексированное значение; обрабатывать первую команду программы во множестве блоков выполнения; считывать первое индексированное значение для использования в качестве первого индекса по меньшей мере одного регистрового файла, при этом первое индексированное значение идентифицирует первое положение в по меньшей мере одном регистровом файле; извлекать первое выходное значение регистра из первого положения по меньшей мере одного регистрового файла, основываясь на первом индексированном значении; выполнять операцию над первым выходным значением регистра для получения первого результата; записывать первый результат во второе положение по меньшей мере одного регистрового файла, основываясь на третьем индексированном значении, при этом третье индексированное значение определяется путем: извлечения второго выходного значения регистра из третьего положения по меньшей мере одного регистрового файла, основываясь на втором индексированном значении; выполнения операции над вторым выходным значением регистра для определения третьего индексированного значения; и при этом первая команда программы содержит четыре отдельных команды и выполняется в семь временных циклов, при этом семь временных циклов содержат один временной цикл для декодирования, один временной цикл для считывания операндов из по меньшей мере одного регистрового файла, четыре временных цикла для выполнения четырех отдельных команд и один временной цикл для записи результатов в по меньшей мере один регистровый файл.
2. Устройство по п.1, в котором третье индексированное значение также определяется путем считывания второго индексированного значения, которое используется в качестве второго индекса по меньшей мере одного регистрового файла, при этом второе индексированное значение представляет третье положение в по меньшей мере одном регистровом файле.
3. Устройство по п.1, в котором третье индексированное значение идентифицирует отдельное положение в регистровом файле.
4. Устройство по п.1, в котором многопотоковый процессор с перемежением также выполнен с возможностью: принимать вторую команду программы в одном из множества блоков выполнения, вторая команда программы включает в себя второе исходное поле, имеющее четвертое индексированное значение, и второе конечное поле, имеющее пятое индексированное значение; извлекать третье выходное значение регистра из четвертого положения по меньшей мере одного регистрового файла, при этом четвертое положение идентифицируется четвертым индексированным значением; выполнять действие над третьим выходным значением регистра для получения шестого индексированного значения; извлекать четвертое выходное значение регистра из пятого положения по меньшей мере одного регистрового файла, при этом пятое положение идентифицируется шестым индексированным значением; выполнять действие над четвертым выходным значением регистра для получения второго результата и записывать второй результат в положение по меньшей мере одного регистрового файла, основываясь на пятом индексированном значении.
5. Устройство по п.4, в котором пятое индексированное значение идентифицирует отдельное положение в регистровом файле.
6. Устройство по п.4, в котором действие над четвертым выходным значением регистра для получения второго результата является выборочным.
7. Устройство по п.1, в котором многопотоковый процессор с перемежением также содержит очередь команд, соединенную с по меньшей мере одним регистровым файлом.
8. Устройство по п.1, в котором многопотоковый процессор с перемежением также содержит процессорный конвейер для выполнения множества команд.
9. Устройство по п.8, в котором многопотоковый процессор с перемежением также содержит шесть потоков для одновременного выполнения шести команд.
10. Устройство по п.1, в котором действие является математическим действием.
11. Устройство по п.1, в котором действие является логическим действием.
12. Устройство по п.1, в котором действие выбирается из группы, состоящей из: сложение, вычитание, умножение, деление, логическое И, логическое И-НЕ, логическое ИЛИ, логическое ИЛИ-НЕ, логическое ИСКЛЮЧАЮЩЕЕ ИЛИ и побитовое маскирование.
13. Устройство по п.1, в котором многопотоковый процессор с перемежением также содержит логику, приспособленную устанавливать зависимость по данным и решать конфликты на уровне ресурсов, закодированных предопределенными битами в первой команде программы, и направлять первую команду программы в определенный блок выполнения.
14. Способ записи выходного значения регистра, содержащий этапы, на которых принимают первую команду программы, включающую в себя первое исходное поле, имеющее первое индексированное значение, и первое конечное поле, имеющее второе индексированное значение; обрабатывают первую команду программы во множестве блоков выполнения; считывают первое индексированное значение для использования в качестве первого индекса по меньшей мере одного регистрового файла, при этом первое индексированное значение идентифицирует первое положение в по меньшей мере одном регистровом файле; извлекают первое выходное значение регистра из первого положения по меньшей мере одного регистрового файла, основываясь на первом индексированном значении; выполняют операцию над первым выходным значением регистра для получения первого результата; записывают первый результат во второе положение по меньшей мере одного регистрового файла, основываясь на третьем индексированном значении, при этом третье индексированное значение определяется путем: извлечения второго выходного значения регистра из третьего положения по меньшей мере одного регистрового файла, основываясь на втором индексированном значении; выполнения операции над вторым выходным значением регистра для определения третьего индексированного значения; и при этом первая команда программы содержит четыре отдельных команды и выполняется в семь временных циклов, при этом семь временных циклов содержат один временной цикл для декодирования, один временной цикл для считывания операндов из по меньшей мере одного регистрового файла, четыре временных цикла для выполнения четырех отдельных команд и один временной цикл для записи результатов в по меньшей мере один регистровый файл.
15. Способ по п.14, в котором множество блоков выполнения является частью многопотокового процессора с перемежением.
16. Способ по п.14, в котором третье индексированное значение определяется путем считывания второго индексированного значения, которое используется в качестве второго индекса по меньшей мере одного регистрового файла, при этом второе индексированное значение представляет третье положение в регистровом файле.
17. Способ по п.14, содержащий также этапы, на которых принимают вторую команду программы, которая включает в себя второе исходное поле, имеющее четвертое индексированное значение, и второе конечное поле, имеющее пятое индексированное значение; обрабатывают вторую команду программы во множестве блоков выполнения; извлекают третье выходное значение регистра из четвертого положения по меньшей мере одного регистрового файла, при этом четвертое положение идентифицируется четвертым индексированным значением; выполняют действие над третьим выходным значением регистра для получения шестого индексированного значения; извлекают четвертое выходное значение регистра из пятого положения регистрового файла, при этом пятое положение идентифицируется шестым индексированным значением; выполняют действие над четвертым выходным значением регистра для получения второго результата и записывают второй результат в положение регистрового файла, основываясь на пятом индексированном значении.
18. Компьютерно-считываемый носитель, включающий в себя инструкции, побуждающие процессор выполнять способ записи выходного значения регистра, содержащий этапы, на которых принимают первую команду программы, включающую в себя первое исходное поле, имеющее первое индексированное значение, и первое конечное поле, имеющее второе индексированное значение; обрабатывают первую команду программы во множестве блоков выполнения; считывают первое индексированное значение для использования в качестве первого индекса по меньшей мере одного регистрового файла, при этом первое индексированное значение идентифицирует первое положение в по меньшей мере одном регистровом файле; извлекают первое выходное значение регистра из первого положения по меньшей мере одного регистрового файла, основываясь на первом индексированном значении; выполняют операцию над первым выходным значением регистра для получения первого результата; записывают первый результат во второе положение по меньшей мере одного регистрового файла, основываясь на третьем индексированном значении, при этом третье индексированное значение определяется путем: извлечения второго выходного значения регистра из третьего положения по меньшей мере одного регистрового файла, основываясь на втором индексированном значении; выполнения операции над вторым выходным значением регистра для определения третьего индексированного значения; и при этом первая команда программы содержит четыре отдельных команды и выполняется в семь временных циклов, при этом семь временных циклов содержат один временной цикл для декодирования, один временной цикл для считывания операндов из по меньшей мере одного регистрового файла, четыре временных цикла для выполнения четырех отдельных команд и один временной цикл для записи результатов в по меньшей мере один регистровый файл.