Считаются ли современные графические процессоры основанными на RISC или CISC?

Я пытаюсь выяснить, имеют ли современные графические процессоры сокращенный набор инструкций или сложный набор инструкций.

Википедия говорит, что дело не в размере набора инструкций, а в том, сколько циклов требуется для завершения и инструкции.

В процессорах RISC каждая инструкция может выполняться за один цикл.

В процессорах CISC выполнение некоторых инструкций занимает несколько циклов.

Я пытаюсь выяснить, в чем дело для современных графических процессоров.


person nabeelr    schedule 24.11.2013    source источник
comment
Плохое определение, многие инструкции, такие как деление, могут выполнять различное количество инструкций. Кроме того, значение RISC и CISC довольно тривиально, а процессоры RISC в некоторой степени являются CISC. Назвав это RISC, что вы на самом деле пытаетесь сказать?   -  person Mikhail    schedule 24.11.2013
comment
Большинство команд выполняются в конвейере, поэтому они требуют нескольких циклов кликов в аппаратном обеспечении, но выглядят как один для внешнего мира.   -  person Ethan    schedule 24.11.2013
comment
Ну, RISC-процессоры обычно имеют очень короткие конвейеры, не так ли? Разница между RISC и CISC заключается в том, что каждая инструкция более упрощена и выполняется в более коротком конвейере, что позволяет выполнить инструкцию за меньшее количество циклов. Источник Я неправильно понимаю?   -  person nabeelr    schedule 03.12.2013


Ответы (3)


Набор инструкций RISC: блок загрузки/сохранения независим от других блоков, поэтому в основном для загрузки и сохранения используются специальные инструкции.

Набор инструкций CISC: блок объявления/сохранения встроен в процедуру выполнения инструкции, поэтому инструкция более сложна, чем инструкция RISC, потому что инструкция CISC, помимо операции, выполняет этапы загрузки и сохранения, и для этого требуется больше транзисторной логики для использования. одно препятствие

person dhokar.w    schedule 04.07.2017

Цель CISC заключалась в том, чтобы взять общие шаблоны кодирования и ускорить их аппаратно. Вы видите это в постоянных расширениях базовой архитектуры. См. Intel MMX и SSE, AMD 3DNow! и т. д. https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions Это также способствует хорошему маркетингу, поскольку вам необходимо перейти на новый процессор, чтобы ускорить выполнение новейших распространенных задач, а программисты постоянно заняты переводом своих шаблонов кода в новые расширения.

Цель RISC была противоположной. Он пытался выполнять несколько базовых функций как можно быстрее. Затем кодировщик должен продолжать разбивать свои обычные задачи кодирования на эти простые инструкции (хотя языки программирования высокого уровня и пакеты/библиотеки кода сделают это за вас). RISC продолжает существовать как архитектура для процессоров ARM. См.: https://en.wikipedia.org/wiki/Reduced_instruction_set_computer.

Я отмечаю, что GPU схожи с философией RISC в том смысле, что цель состоит в том, чтобы выполнять как можно больше относительно простых вычислений как можно быстрее. Движение к глубокому обучению создало потребность в обучении миллионов относительно простых параметров, отсюда и возврат к высокопараллельной и относительно простой архитектуре. Обе философии, реализованные внутри вашего компьютера, — это лучшее из обоих миров.

person Maddenker    schedule 29.01.2020

Если вы имеете в виду Nvidia, то это явно RISC, поскольку большинство ее графических процессоров даже не имеют целочисленного деления и операций по модулю в аппаратном обеспечении, только сдвиги, побитовые операции и 3 арифметических операции (сложение, вычитание, умножение) используются для реализации этих 2. Я могу не нашел пример, но этот вопрос (модульная арифметика на GPU) показывает, что мод использует

процедура, реализующая какой-то сложный алгоритм (около 50 инструкций или даже больше)

Даже язык NVVM (виртуальная машина Nvidia) под названием PTX использует больше операций, некоторые из которых в любом случае запекаются в набор более простых операций после преобразования в один из родных языков (существуют разные версии таких языков из-за природы графических процессоров и их поколений/семейств). но они называются просто SASS).

Вы можете увидеть здесь все доступные операции вместе с описанием каждой из них, которые все же очень короткие и не очень понятные (особенно если у вас нет опыта программирования на машинном уровне, например, зная, что масштабирование означает, что 1 сдвигается влево к операнду, как в FSCALE x86). или Коэффициент масштабирования и т. д.): https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref

Если вы имеете в виду AMDGPU, то там много инструкций и не все так понятно, потому что некоторые источники говорят, что они перешли с VLIW на что-то как раз тогда, когда были выпущены графические процессоры Southern Islands.

person Danil    schedule 16.09.2020