Неужели нам действительно нужно столько xPU?

Обновление: 17 ноября 2021 г.

В последние годы объявления о новых архитектурах процессоров выходили почти каждый день с трехбуквенным сокращением - TPU, IPU, NPU. Но что на самом деле их отличает? Неужели существует так много уникальных архитектур процессоров или случилось что-то еще?

В последние годы анонсы о новых архитектурах процессоров выходили почти каждый день, а также приводились трехбуквенные аббревиатуры - TPU, IPU, NPU. Но что на самом деле их отличает? Неужели существует так много уникальных архитектур процессоров или случилось что-то еще?

В 2018 году Джон Л. Хеннесси и Дэвид А. Паттерсон прочитали лекцию Тьюринга под названием «Новый золотой век компьютерной архитектуры». Они озабочены процессором и его развитием, но это лишь небольшая часть всего уравнения. Исследователь IP Arteris и системный архитектор Майкл Франк сказал: «С точки зрения ЦП, большинство этих xPU не являются настоящими процессорами». «Они больше похожи на графический процессор, ускоритель для особых рабочих нагрузок. А внутри у них много разнообразия. Машинное обучение - это тип процессора, вы можете в совокупности называть их ускорителями машинного обучения, но они ускоряют вычислительную часть множества ".

Суть процессора можно свести к трем вещам. «В конечном счете, это действительно возврат к архитектуре набора команд (ISA)», - сказал Мануэль Ум, директор по маркетингу микросхем в Xilinx. «Это определяет, чем вы хотите заниматься. Затем у вас есть ввод-вывод и память, которые поддерживают ISA и задачи, которые он пытается выполнить. Это будет очень интересное время в будущем, потому что мы увидим больше, чем последние два или три года. Время для большего количества инноваций и изменений ».

Многие новые архитектуры не представляют собой одиночные процессоры. «То, что мы видим, — это комбинация разных типов процессоров или программируемых механизмов, которые существуют в одной и той же SoC или одной и той же системе», — сказал Пьер-Ксавье Томас, директор группы Cadence. Технологии и стратегический маркетинг. «Распределяйте программные задачи по разным аппаратным средствам или гибким программируемым механизмам. Все процессоры могут использовать общий API, но домен выполнения будет разным. Здесь вы действительно увидите разные типы обработки с разными типами характеристик».

Реальность такова, что большинство названий маркетинговые.

«Дело в том, что люди используют эти имена и аббревиатуры для двух разных целей, - сказал Саймон Давидманн, генеральный директор Imperas Software. «Один используется для объяснения архитектуры процессора, например SIMD (Single Instruction Multiple Data). Другой определяет сегмент приложения, к которому он обращается. Таким образом, он может определять архитектуру процессора или что-то вроде торговых марок тензорного процессора (TPU). Они называют свои гетерогенные или однородные архитектуры, а не отдельные процессоры ».

Немного истории

Сорок лет назад все было намного проще. В то время существовал центральный процессор (ЦП), и было много его вариантов, но в основном все они были полными по Тьюрингу процессорами с архитектурой фон Неймана. У каждого есть свой набор инструкций, что делает их более эффективными для определенных задач, и есть много дискуссий об относительных преимуществах сложного набора инструкций (CISC) и сокращенного набора инструкций (RISC).

Появление RISC-V привлекло большое внимание к ISA. «Люди хотят понимать ISA, потому что именно ISA определяет, насколько оптимизирован процессор для определенных задач», - сказал Умм из Xilinx. «Они могут взглянуть на ISA и начать цикл вычислений. Если ISA имеет собственные инструкции и работает на частоте 1 ГГц, я могу сравнить его с другим процессором ISA, которому могут потребоваться две инструкции для одной и той же функции, но процессор работает на частоте 1.5 ГГц. Что заставляет меня идти дальше? Они проводят математические вычисления для важных функций ».

Для процессоров существует несколько методов упаковки. Иногда ввод-вывод или память помещаются в один и тот же пакет. Их называют микроконтроллерами (MCU).

Когда модемы стали популярными, появились процессоры цифровых сигналов (DSP), и их отличие состояло в том, что они использовали архитектуру Гарварда. Это отделяет командную шину от шины данных. Некоторые из них также реализовали архитектуру SIMD, чтобы сделать обработку данных более эффективной.

Разделение инструкций и данных предназначено для повышения пропускной способности, хотя оно ограничивает некоторые возможности программирования на грани, например, самописные программы. «Обычно граничные условия не являются расчетами», - сказал Ум. «Это все чаще ввод-вывод или память. Отрасль переходит от увеличения вычислительной мощности к обеспечению достаточного количества данных для поддержания вычислительной мощности и производительности ».

Когда один процессор больше не становится быстрее, они соединяют несколько процессоров вместе. Эти процессоры обычно совместно используют память и поддерживают концепцию полноты Тьюринга для каждого процессора и всего кластера процессоров. Неважно, на каком ядре выполняется какая-либо часть программы, потому что результат один и тот же.

Следующей важной разработкой является графический процессор (GPU), который нарушил соглашение, поскольку каждый элемент обработки или конвейер имеет свою собственную память и не может быть адресован за пределами процессора. Поскольку память ограничена, это означает, что он не может выполнять какие-либо произвольные задачи обработки, а может выполнять только те задачи, которые могут быть размещены в предоставленном пространстве памяти.

«Для некоторых типов функций графические процессоры являются очень мощными процессорами, но их конвейеры очень длинные», - отмечает Умм. «Эти конвейеры позволяют блоку графического процессора непрерывно обрабатывать данные, но в какой-то момент, если вам придется обновить конвейер, это будет огромным ударом. В систему встроено много времени ожидания и неопределенности ».

Хотя были определены многие другие ускорители, графические процессоры, а затем и графические процессоры общего назначения (GPGPU), определили парадигму программирования и программный стек, которые упростили их использование по сравнению с предыдущими ускорителями. «В течение многих лет определенные рабочие места были специализированными, - сказал Давидманн из Imperas. «Есть ЦП для последовательных программ. Есть графический процессор, который ориентирован на обработку данных для экран и переносит нас в очень параллельный мир. Использует множество мелких обрабатывающих элементов для выполнения задач. Теперь есть задачи машинного обучения ».

Какие еще правила строительства могут объяснить всю новую архитектуру? В прошлом массивы процессоров обычно соединялись памятью или фиксированными сетевыми топологиями (такими как ячеистая или кольцевая). Недавно появилась комбинация Network on Chip (NoC), которая позволяет распределенным гетерогенным процессорам обмениваться данными более гибко. В будущем они также смогут общаться без использования памяти.

«В настоящее время NoC передает только данные», - сказал Фрэнк из Arteris. «В будущем NoC может быть расширен на другие области, где обмен данными между ускорителями выходит за рамки данных. Он может отправлять команды, отправлять уведомления и т. Д. Коммуникационные требования массива ускорителей могут отличаться от коммуникационных требований ЦП или стандартной SoC. Однако сеть на кристалле не ограничивает вас подмножеством. Вы можете оптимизировать и улучшить производительность, поддерживая специальные коммуникационные потребности ускорителей ».

Архитектура реализации

Один из способов дифференциации процессора - оптимизация для конкретной операционной среды. Например, программное обеспечение может работать в облаке, но вы также можете запускать то же программное обеспечение на устройстве micro IoT. Архитектура реализации будет сильно отличаться и будет обеспечивать разные рабочие точки с точки зрения производительности, энергопотребления, стоимости или способности работать в экстремальных условиях.

«Некоторые приложения предназначены для облачных вычислений, и теперь мы приближаем их к совершенству», - сказал Томас из Cadence. «Это может быть связано с требованиями к задержке или рассеянием энергии или мощности, что потребует другого типа архитектуры. Возможно, вам захочется иметь один и тот же программный стек, чтобы иметь возможность работать в двух местах. Облако должно обеспечивать гибкость, поскольку оно будет принимать различные типы приложений и должно иметь возможность агрегировать большое количество пользователей. Для этого требуется, чтобы оборудование на сервере имело возможности для конкретного приложения, но один размер подходит не для всех ».

ML увеличил свои собственные требования. «При использовании нейронных сетей и машинного обучения для создания интеллектуальных систем вам необходимо использовать программные фреймворки и общие программные стеки, чтобы запрограммировать новую сеть и сопоставить ее с оборудованием», - добавил Томас. «Затем вы можете адаптировать программное приложение к нужному оборудованию с точки зрения PPA. Это вызывает потребность в различных типах обработки и процессорах, чтобы удовлетворить эти потребности на уровне оборудования ».

Эти требования определяются приложением. «Компания создала процессор для графических операций», - сказал Фрэнк. «Они оптимизируют и ускоряют отслеживание графиков и выполнение таких операций, как переупорядочение графиков. Есть и другие грубые силы, ускоряющие машинное обучение, а именно умножение матриц. Доступ к памяти отличается для каждой архитектуры. Это особая проблема, потому что при создании ускорителя самая важная цель - сохранить его занятость. Вы должны передать как можно больше данных в ALU, потому что их можно потреблять и производить ».

Многие из этих приложений имеют много общего. «У всех них есть локальная память, у них есть сеть на кристалле для связи, и каждый процессор, выполняющий программный алгоритм, обрабатывает небольшой фрагмент данных», - сказал Дэвидманн. «Эти задания планируются операционными системами, работающими на более традиционных процессорах».

Сложная часть разработчиков оборудования - это спрогнозировать, какие задачи они должны будут выполнять. «Хотя вы будете выполнять аналогичные операции на некоторых уровнях, люди обращают внимание на различия в уровнях», - сказал Томас. «Чтобы иметь возможность обрабатывать нейронную сеть, требуется несколько типов вычислительной мощности. Это означает, что вам нужно иметь возможность каким-то образом обрабатывать часть нейронной сети, а затем вам может потребоваться другой тип операции для обработки другого слоя. Движение данных И объем данных также меняется слой за слоем ».

Эта дифференциация может выходить за рамки перемещения данных. «Для секвенирования генома вам нужно произвести некоторую обработку», - сказал Фрэнк. «Но вы не можете использовать один тип ускорителя для ускорения всего. Вам нужно построить целый набор разных ускорителей для разных конвейеров. ЦП становится стражем процесса выполнения управления. Он устанавливает, выполняет DMA и обеспечивает принятие решений между двумя процессами. Понимание и анализ алгоритмов и определение того, как вы хотите оптимизировать их обработку, - это полная архитектурная задача ».

Часть процесса требует разбиения. «Не существует единого типа процессора, который можно было бы оптимизировать для каждой задачи процессора.FPGA / ПРОГРАММИРУЕМАЯ ПОЛЬЗОВАТЕЛЕМ ВЕНТИЛЬНАЯ МАТРИЦА это нехорошо, CPU нехорошо, GPU нехорошо, DSP тоже необходим », - сказал Умм. «Мы создали серию устройств, которые содержат все это, но сложность со стороны заказчика заключается в том, что они должны обеспечивать интеллект, чтобы определить, какие части общей системы будут нацелены на процессор, программируемую логику или ИИ. Двигатель. Всем нужен этот автоматический волшебный инструмент, инструмент, который может сразу решить поместить его в ЦП, поместить его в ПЛИС и поместить его в графический процессор. Сегодня такого инструмента не существует ».

Тем не менее, процессор всегда будет играть роль. «ЦП необходим для выполнения нестандартных частей программы», - сказал Фрэнк. «Общая программируемость ЦП имеет свои преимущества. Если у вас есть специализированные структуры данных или математические операции, это не сработает. ЦП - это универсальный процессор, который ни для чего не оптимизирован. Это ни к чему не годится. . »

Изменить «аннотация»

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

«Последовательность - это договор», - сказал Фрэнк. «Такая последовательность очень важна и никуда не денется. Но вы можете себе представить, что в движке потока данных согласованность не так важна, потому что вы передаете данные, движущиеся на границе, непосредственно от одного ускорителя к другому. Если вы разделите набор данных, согласованность станет препятствием, потому что это будет стоить вам дополнительных циклов. Вы должны проверить информацию. Вы должны предоставить обновленную информацию ».

Это требует другой архитектуры памяти. «Вы должны подумать о структуре памяти, потому что у вас очень много тесно связанной памяти», - сказал Ум. «Вы можете получить доступ к соседней памяти, но у вас быстро закончится соседняя память, и вы не сможете получить доступ вовремя. Это нужно понимать в дизайне. По мере развития инструмента он начнет узнавать больше. Сегодня это делается человеческим интеллектом, способным понять архитектуру и применить ее ».

Также необходим более высокий уровень абстракции. «Некоторые фреймворки могут отображать или компилировать известные сети для целевого оборудования», - сказал Томас. «У вас есть набор низкоуровневых ядер или API, которые будут использоваться в программном стеке, а затем в конечном итоге использоваться картографом нейронной сети. Ниже у вас могут быть разные типы оборудования, в зависимости от того, чего вы хотите достичь, в зависимости от характеристик вашего продукта. Он обеспечивает ту же функциональность, но не использует то же оборудование или те же компромиссы PPA ».

Это оказывает сильное давление на эти компиляторы. «Главный вопрос - как вы запрограммируете ускоритель в будущем?» - спросил Фрэнк. «Вы реализовали аппаратный движок, такой как первое поколение графических процессоров? Или вы создали небольшой программируемый движок со своим собственным набором команд? Теперь вам нужно запрограммировать эти вещи отдельно и поместить их в каждый из них, подключенный к потоку данных для выполнения задач. Один процессор имеет определенное подмножество всего набора команд, а другой процессор - другое подмножество, и все они будут совместно использовать некоторые перекрывающиеся части потока управления. У вас могут быть продукты с немного другими возможностями ускорения. Компилятор или библиотеки, которые это понимают, будут соответствующим образом отображать ».

Суммировать

Архитектура процессора не изменилась. Они по-прежнему следуют тем же выборам, что и последние 40 лет. Что меняется, так это то, как устроен чип. Теперь они содержат большое количество разнородных процессоров с памятью и коммуникациями, оптимизированными для подмножества прикладных задач. Каждый чип делает свой выбор для функции процессора и цели оптимизации, требуемой пропускной способности и потока данных, который он обычно видит.

Каждый поставщик оборудования хочет отличать свой чип от других чипов, но продвигать его через брендинг намного проще, чем говорить о внутренних технических деталях. Поэтому они дали ему имя, назвали его первым, самым быстрым и крупнейшим и связали его с конкретными типами проблем приложений. Эти трехбуквенные сокращения стали именами задач приложения, но они не определяют архитектуру оборудования.

В последние годы объявления о новых архитектурах процессоров выходили почти каждый день с трехбуквенным сокращением - TPU, IPU, NPU. Но что на самом деле их отличает? Неужели существует так много уникальных архитектур процессоров или случилось что-то еще?

В 2018 году Джон Л. Хеннесси и Дэвид А. Паттерсон прочитали лекцию Тьюринга под названием «Новый золотой век компьютерной архитектуры». Они озабочены процессором и его развитием, но это лишь небольшая часть всего уравнения. Исследователь IP Arteris и системный архитектор Майкл Франк сказал: «С точки зрения ЦП, большинство этих xPU не являются настоящими процессорами». «Они больше похожи на графический процессор, ускоритель для особых рабочих нагрузок. А внутри у них много разнообразия. Машинное обучение - это тип процессора, вы можете в совокупности называть их ускорителями машинного обучения, но они ускоряют вычислительную часть множества ".

Суть процессора можно свести к трем вещам. «В конечном счете, это действительно возврат к архитектуре набора команд (ISA)», - сказал Мануэль Ум, директор по маркетингу микросхем в Xilinx. «Это определяет, чем вы хотите заниматься. Затем у вас есть ввод-вывод и память, которые поддерживают ISA и задачи, которые он пытается выполнить. Это будет очень интересное время в будущем, потому что мы увидим больше, чем последние два или три года. Время для большего количества инноваций и изменений ».

Многие новые архитектуры не являются однопроцессорными. «Мы видим комбинацию различных типов процессоров или программируемых механизмов, которые существуют в одной SoC или одной системе», - сказал Пьер-Ксавье Томас, директор группы технологий и стратегического маркетинга Cadence. «Распределение программных задач на различное оборудование или гибкие программируемые механизмы. Все процессоры могут использовать общий API, но домен выполнения будет отличаться. Здесь вы действительно увидите разные типы обработки с разными типами характеристик ».

Реальность такова, что большинство названий маркетинговые.

«Дело в том, что люди используют эти имена и аббревиатуры для двух разных целей, - сказал Саймон Давидманн, генеральный директор Imperas Software. «Один используется для объяснения архитектуры процессора, например SIMD (Single Instruction Multiple Data). Другой определяет сегмент приложения, к которому он обращается. Таким образом, он может определять архитектуру процессора или что-то вроде торговых марок тензорного процессора (TPU). Они называют свои гетерогенные или однородные архитектуры, а не отдельные процессоры ».

Немного истории

Сорок лет назад все было намного проще. В то время существовал центральный процессор (ЦП), и было много его вариантов, но в основном все они были полными по Тьюрингу процессорами с архитектурой фон Неймана. У каждого есть свой набор инструкций, что делает их более эффективными для определенных задач, и есть много дискуссий об относительных преимуществах сложного набора инструкций (CISC) и сокращенного набора инструкций (RISC).

Появление RISC-V привлекло большое внимание к ISA. «Люди хотят понимать ISA, потому что именно ISA определяет, насколько оптимизирован процессор для определенных задач», - сказал Умм из Xilinx. «Они могут взглянуть на ISA и начать цикл вычислений. Если ISA имеет собственные инструкции и работает на частоте 1 ГГц, я могу сравнить его с другим процессором ISA, которому могут потребоваться две инструкции для одной и той же функции, но процессор работает на частоте 1.5 ГГц. Что заставляет меня идти дальше? Они проводят математические вычисления для важных функций ».

Для процессоров существует несколько методов упаковки. Иногда ввод-вывод или память помещаются в один и тот же пакет. Их называют микроконтроллерами (MCU).

Когда модемы стали популярными, появились процессоры цифровых сигналов (DSP), и их отличие состояло в том, что они использовали архитектуру Гарварда. Это отделяет командную шину от шины данных. Некоторые из них также реализовали архитектуру SIMD, чтобы сделать обработку данных более эффективной.

Разделение инструкций и данных предназначено для повышения пропускной способности, хотя оно ограничивает некоторые возможности программирования на грани, например, самописные программы. «Обычно граничные условия не являются расчетами», - сказал Ум. «Это все чаще ввод-вывод или память. Отрасль переходит от увеличения вычислительной мощности к обеспечению достаточного количества данных для поддержания вычислительной мощности и производительности ».

Когда один процессор больше не становится быстрее, они соединяют несколько процессоров вместе. Эти процессоры обычно совместно используют память и поддерживают концепцию полноты Тьюринга для каждого процессора и всего кластера процессоров. Неважно, на каком ядре выполняется какая-либо часть программы, потому что результат один и тот же.

Следующей важной разработкой является графический процессор (GPU), который нарушил соглашение, поскольку каждый элемент обработки или конвейер имеет свою собственную память и не может быть адресован за пределами процессора. Поскольку память ограничена, это означает, что он не может выполнять какие-либо произвольные задачи обработки, а может выполнять только те задачи, которые могут быть размещены в предоставленном пространстве памяти.

«Для некоторых типов функций графические процессоры являются очень мощными процессорами, но их конвейеры очень длинные», - отмечает Умм. «Эти конвейеры позволяют блоку графического процессора непрерывно обрабатывать данные, но в какой-то момент, если вам придется обновить конвейер, это будет огромным ударом. В систему встроено много времени ожидания и неопределенности ».

Несмотря на то, что были определены многие другие ускорители, графические процессоры - а затем и графические процессоры общего назначения (GPGPU) - определили парадигму программирования и программный стек, которые упростили их использование по сравнению с предыдущими ускорителями. «В течение многих лет некоторые рабочие места были специализированными, - сказал Давидманн из Imperas. «Есть ЦП для последовательных программ. Есть графический процессор, который фокусируется на обработке данных для экрана и переносит нас в высокопараллельный мир. Использует множество мелких обрабатывающих элементов для выполнения задач. Теперь есть задачи машинного обучения ».

Какие еще правила строительства могут объяснить всю новую архитектуру? В прошлом массивы процессоров обычно подключались через память или фиксированные сетевые топологии (например, ячеистую или кольцевую). Недавно появилась комбинация Network on Chip (NoC), которая позволяет распределенным гетерогенным процессорам обмениваться данными более гибко. В будущем они также смогут общаться без использования памяти.

«В настоящее время NoC передает только данные», - сказал Фрэнк из Arteris. «В будущем NoC может быть расширен на другие области, где обмен данными между ускорителями выходит за рамки данных. Он может отправлять команды, отправлять уведомления и т. Д. Коммуникационные требования массива ускорителей могут отличаться от коммуникационных требований ЦП или стандартной SoC. Однако сеть на кристалле не ограничивает вас подмножеством. Вы можете оптимизировать и улучшить производительность, поддерживая специальные коммуникационные потребности ускорителей ».

Архитектура реализации

Один из способов дифференциации процессора - оптимизация для конкретной операционной среды. Например, программное обеспечение может работать в облаке, но вы также можете запускать то же программное обеспечение на устройствах micro IoT. Архитектура реализации будет сильно отличаться и будет обеспечивать разные рабочие точки с точки зрения производительности, энергопотребления, стоимости или способности работать в экстремальных условиях.

«Некоторые приложения предназначены для облачных вычислений, и теперь мы приближаем их к совершенству», - сказал Томас из Cadence. «Это может быть связано с требованиями к задержке или рассеянием энергии или мощности, что потребует другого типа архитектуры. Возможно, вам захочется иметь один и тот же программный стек, чтобы иметь возможность работать в двух местах. Облако должно обеспечивать гибкость, поскольку оно будет принимать различные типы приложений и должно иметь возможность агрегировать большое количество пользователей. Для этого требуется, чтобы оборудование на сервере имело возможности для конкретного приложения, но один размер подходит не для всех ».

ML увеличил свои собственные требования. «При использовании нейронных сетей и машинного обучения для создания интеллектуальных систем вам необходимо использовать программные фреймворки и общие программные стеки, чтобы запрограммировать новую сеть и сопоставить ее с оборудованием», - добавил Томас. «Затем вы можете адаптировать программное приложение к нужному оборудованию с точки зрения PPA. Это вызывает потребность в различных типах обработки и процессорах, чтобы удовлетворить эти потребности на уровне оборудования ».

Эти требования определяются приложением. «Компания создала процессор для графических операций», - сказал Фрэнк. «Они оптимизируют и ускоряют отслеживание графиков и выполнение таких операций, как переупорядочение графиков. Есть и другие грубые силы, ускоряющие машинное обучение, а именно умножение матриц. Доступ к памяти отличается для каждой архитектуры. Это особая проблема, потому что при создании ускорителя самая важная цель - сохранить его занятость. Вы должны передать как можно больше данных в ALU, потому что их можно потреблять и производить ».

Многие из этих приложений имеют много общего. «У всех них есть локальная память, у них есть сеть на кристалле для связи, и каждый процессор, выполняющий программный алгоритм, обрабатывает небольшой фрагмент данных», - сказал Дэвидманн. «Эти задания планируются операционными системами, работающими на более традиционных процессорах».

Сложная часть разработчиков оборудования - это спрогнозировать, какие задачи они должны будут выполнять. «Хотя вы будете выполнять аналогичные операции на некоторых уровнях, люди обращают внимание на дифференциацию слоев», - сказал Томас. «Чтобы иметь возможность обрабатывать нейронную сеть, требуется несколько типов вычислительной мощности. Это означает, что вам нужно иметь возможность каким-то образом обрабатывать часть нейронной сети, а затем вам может потребоваться другой тип операции для обработки другого слоя. Движение данных И объем данных также меняется слой за слоем ».

Эта дифференциация может выходить за рамки перемещения данных. «Для секвенирования генома вам нужно произвести некоторую обработку», - сказал Фрэнк. «Но вы не можете использовать один тип ускорителя для ускорения всего. Вам нужно построить целый набор разных ускорителей для разных конвейеров. ЦП становится стражем процесса выполнения управления. Он устанавливает, выполняет DMA и обеспечивает принятие решений между двумя процессами. Понимание и анализ алгоритмов и определение того, как вы хотите оптимизировать их обработку, - это полная архитектурная задача ».

Часть процесса требует разбиения. «Не существует единого типа процессора, который можно было бы оптимизировать для каждой процессорной задачи - FPGA не годится, процессор не подходит, графический процессор не подходит, DSP также необходим», - сказал Ум. «Мы создали серию устройств, которые содержат все это, но сложность со стороны заказчика заключается в том, что они должны обеспечивать интеллект, чтобы определить, какие части общей системы будут нацелены на процессор, программируемую логику или ИИ. Двигатель. Всем нужен этот автоматический волшебный инструмент, инструмент, который может сразу решить поместить его в ЦП, поместить его в ПЛИС и поместить его в графический процессор. Сегодня такого инструмента не существует ».

Тем не менее, процессор всегда будет играть роль. «ЦП необходим для выполнения нестандартных частей программы», - сказал Фрэнк. «Общая программируемость ЦП имеет свои преимущества. Если у вас есть специализированные структуры данных или математические операции, это не сработает. ЦП - это универсальный процессор, который ни для чего не оптимизирован. Он ни в чем не хорош ».

Изменить «аннотация»

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

«Последовательность - это договор», - сказал Фрэнк. «Такая последовательность очень важна и никуда не денется. Но вы можете себе представить, что в движке потока данных согласованность не так важна, потому что вы передаете данные, движущиеся на границе, непосредственно от одного ускорителя к другому. Если вы разделите набор данных, согласованность станет препятствием, потому что это будет стоить вам дополнительных циклов. Вы должны проверить информацию. Вы должны предоставить обновленную информацию ».

Это требует другой архитектуры памяти. «Вы должны подумать о структуре памяти, потому что у вас очень много тесно связанной памяти», - сказал Ум. «Вы можете получить доступ к соседней памяти, но у вас быстро закончится соседняя память, и вы не сможете получить доступ вовремя. Это нужно понимать в дизайне. По мере развития инструмента он начнет узнавать больше. Сегодня это делается человеческим интеллектом, способным понять архитектуру и применить ее ».

Также необходим более высокий уровень абстракции. «Некоторые фреймворки могут отображать или компилировать известные сети для целевого оборудования», - сказал Томас. «У вас есть набор низкоуровневых ядер или API, которые будут использоваться в программном стеке, а затем в конечном итоге использоваться картографом нейронной сети. Ниже у вас могут быть разные типы оборудования, в зависимости от того, чего вы хотите достичь, в зависимости от характеристик вашего продукта. Он обеспечивает ту же функциональность, но не использует то же оборудование или те же компромиссы PPA ».

Это оказывает сильное давление на эти компиляторы. «Главный вопрос - как вы запрограммируете ускоритель в будущем?» - спросил Фрэнк. «Вы реализовали аппаратный движок, такой как первое поколение графических процессоров? Или вы создали небольшой программируемый движок со своим собственным набором команд? Теперь вам нужно запрограммировать эти вещи отдельно и поместить их в каждый из них, подключенный к потоку данных для выполнения задач. Один процессор имеет определенное подмножество всего набора команд, а другой процессор - другое подмножество, и все они будут совместно использовать некоторые перекрывающиеся части потока управления. У вас могут быть продукты с немного другими возможностями ускорения. Компилятор или библиотеки, которые это понимают, будут соответствующим образом отображать ».

Суммировать

Архитектура процессора не изменилась. Они по-прежнему следуют тем же выборам, что и последние 40 лет. Что меняется, так это то, как устроен чип. Теперь они содержат большое количество разнородных процессоров с памятью и коммуникациями, оптимизированными для подмножества прикладных задач. Каждый чип делает свой выбор для функции процессора и цели оптимизации, требуемой пропускной способности и потока данных, который он обычно видит.

Каждый поставщик оборудования хочет отличать свой чип от других чипов, но продвигать его через брендинг намного проще, чем говорить о внутренних технических деталях. Поэтому они дали ему имя, назвали его первым, самым быстрым и крупнейшим и связали его с конкретными типами проблем приложений. Эти трехбуквенные сокращения стали именами задач приложения, но они не определяют архитектуру оборудования.