Previous Entry Share Next Entry
photo24

(repost) FPGA CPU

Оригинал взят у akuklev в FPGA CPU
Вынесу из комментов дисскуссию с mithraen:

akuklev: А в баллистические переключатели я верю, как верю в спинтронику (обходить тепловыделение), в достижимость атомарного масштаба электроники (одноатомные, не считая подводящих контактов, транзисторы уже делали) и в графен (по причине высоченной скорости движения электронов в нём и средней длинны свободного полёта электронов в 60 микрон) и FPGA, потому что на сверхмалых масштабах мы сможем делать только полностью регулярные структуры, причём с определённой долей неизбежного брака на каждом полученном чипе, а значит софтовое программирование чипа в электрическую цепь (причём с индивидуальными для каждого чипа байпасами бракованных зон) единственное спасение.

mithraen: Для подобных процессоров мне кажется куда вероятнее применение не подхода FPGA, а размещения на одном кристалле большого количества упрощенных процессоров, часть из которых окажется бракованными. У FPGA ради универсальности слишком большую часть площади кристалла придется отдавать под проводники. [..]

akuklev: Если чип не плоский, а очень многослойный, большое количество связей проблемой не является (см. человеческий мозг), а с большого количества упрощённых процессоров, есть всё-таки проблема с количеством дефектов и возможностью обойти свежепоявляющиеся дефекты. 0.1% дефектных транзисторов в FPGA вообще не снижают измеримо производительность, т.к. 0.1% ячеек просто можно свободно найти быстрым тестом и обойти. А 0.1% дефектов в жестком чипе, даже если там стократная редундантность, это полная неработоспособность: 0.1% для проца размеров Xilinx это 6 миллионов транзисторов, то есть заведомо часть из битых транзисторов будет в каждой из 100 копий "простого процессора".

mithraen: Если ожидается столь большие цифры как 0.1% сбойных ячеек — согласен. При наличии под рукой терагерцовых процессоров делать синтез схемы под каждый физический экземпляр процессора будет вполне реально.

Только я плохо себе представляю как таким образом делать решение, которое бы корректно реагировало на отказ в ячеек уже в процессе работы. Сочетанием обоих методов? Т.е. синтезировать под каждый физический экземпляр что-то сделанное аналогично LEON, да еще и периодически проверять состояние и перегенерировать "прошивку"?

akuklev: Да, так точно.

На данный момент лучшие придуманные методики суб-5-нанометрового паттернинга дают такой порядок брака. Для 5 нм может получится всё улучшить в разы, но при массовом производстве (т.е. не по одиночке иглой STM-микроскопа) транзисторов, состоящих из одного атома, брак будет огромный, я думаю как раз порядка между 0.1 и 0.01%. Притом из-за космического излучения и температуры, приблизительно каждые несколько месяцев в земных условиях будет дохнуть по одному транзистору (в космических условиях и всяких других жестких транзисторы будут дохнуть почти каждый день). Транзисторов много, на фоне 0.1% встроенного брака одиночные сдыхающие транзисторы теряются, но только если уметь быстро детектировать проблему и починиться.

Помогает то, что от термических проблем и ионизирующего излучения
а) транзисторы чаще всего дохнут напрочь (дислокации на линиях исток-сток, SEB = single event burnout), т.е. у них внезапно сопротивление становится условно говоря бесконечным, такое дело легко заметить сразу, смотря за общим сопротивлением участков схемы, там должен быть резкий скачок, каких принципиально не бывает во время нормального функционирования (т. е. нужно непрерывно высокоточно мерять потенциал в нескольких сотнях точек чипа, что заведомо возможно);
б) транзисторы всегда дохнут по-одиночке, поэтому даже дислокации атомов затвора (SEGR = single event gate rupture и SEL = single event latchup, в зависимости от характера дислокации) можно очень быстро детектировать, проверив чётность несколькоих специальных тестовых сигналов (все семейство сигналов должно пройти через все пути всех транзисторов и задействовать каждый транзистор в обоих состояниях, для типового ядра требуется подать несколько сотен сигналов, чтобы обойти всё). Такая проверка занимает микросекунды и может проводиться, скажем, раз в секунду;
в) дохнет только одно ядро, в то время как на остальных можно как раз перегенерировать прошивку сдохшего.

Можно, конечно, использовать везде логику LEON'а и таким образом добиться того, чтобы все Single Event Effects (SEU, SEL, SEGR, SEB) сходу детектировались и на лету исправлялись, без потерь данных и необходимости откатывать и повторять что-либо. Будет процессор пригодный для космоса и нутра атомных электростанций. Однако в этом случае количество необходимых транзисторов для реализации схемы возрастёт приблизительно в три раза, а быстродействие соответственно упадёт приблизительно на треть.

Побочные ветви дискуссии:
mithraen: Только все же я предполагаю что блоки размером с LUT'ы у Xilinx'ов это слишком мелкие блоки. Вон в тех же Virtex'ах и даже в относительно новых Spartan'ах кроме LUT'ов есть еще различные специализированные блоки, вроде математических, тонко размазанные по чипу.

akuklev: Согласен, так может быть значительно лучше. Единственное, может получиться, что можно если нужен атомарный масштаб и миллиардно-массовое производство, то делать получится только однородную структуру, т.е. копии одной и той же ячейки во всех направлениях 2^n раз при помощи методов вроде PCR-реакции в биологии.

mithraen: А вообще идея FPGA в качестве CPU мне нравится, вот только нынешним производителям процессоров она очень не понравится. Ибо возможность менять архитектуру, добавлять новые команды и т.д. легким движением руки — это для них баг, а не фича.

akuklev: Да, будут патентовать прошивки, DRMмить всё что можно и т.д. Будет война, конечно, на эту тему. Но технические преимущества в случае атомарной электроники таки перевешивают, судя по всему. Топовые производители запросто сделают FPGашки, которые перепрошить можно только обладая ключом, который они будут зверски хранить. Потом кто-нибудь хакнет такую FPGашку STM-микроскопом, удалив с точностью хирурга DRM-блоки. Потом его будут ловить как какого-нибудь Ассанжа или Ким ДотКома. В общем, запасёмся попкорном. :-)

А может всякий Intel с AMD не успеет, и первыми такой процессор сделает Xilinx, в результате чего первым ничего не останется, кроме как сконцентрироваться на дизайне прошивок. Станут так сказать софтвер-фирмой.


  • 1
sab123 June 20th, 2013
Но ведь человеческий мозг - это видимо аналог именно большого количества процессоров (~300 миллионов), а не FPGA.

Кстати, очевидно, что если процессор "мягкий", то компилировать надо не в какую-то систему команд на нем, а прямо в FPGA. Вероятно, с промежуточным более-менее высокоуровневым языком, откуда компилировать в окончательную форму при установке или JIT.

kray_zemli June 21st, 2013
чтобы компилировать прямо в FPGA, надо соместить процессор с памятью.

sab123 June 21st, 2013
Зачем? В FPGA и так уже есть память, управляющая соединениями внутри нее. Рассуждения выше о регулярной структуре - именно про это.

kray_zemli June 21st, 2013
Нет-нет. Сейчас процессор и память являются разными компонентами и стоят в разных местах. И связь между ними иногда является быстрым местом. Так вот, если уж мы захотели превращать в FPGA процессор, то не лучше ли будет в дополнение или даже вместо этого превратить в FPGA оперативную память? Тогда процессор вообще может не понадобиться.

sab123 June 21st, 2013
Не получится. По архитектуре PGA (по-русски - ПЛМ) - это именно аналог памяти (FPGA - RAM, не-F - ROM), с аналогиными связями, но разница в том, что в PGA имеется только небольшое подмножество этих связей. Поэтому можно использовать память в качестве PGA, но не наоборот.

Но вот скажем отштамповать их оба два на одном кристалле - это должно быть запросто.

nicka_startcev June 21st, 2013
afaik выгоднее штамповать на двух-трех отдельных кристаллах и собирать стопкой, как это делают в модных ARM SoC.

(Deleted comment)
thedeemon June 21st, 2013
А поменять в уже установленном процессоре систему команд можно? Речь об этом была, как я понял.

(Deleted comment)
akuklev June 25th, 2013
> тут кстати вполне встает вопрос об отказе от бинарной логики.
> то, что требует конкретной точности и бинарной логики будет обрабатыватся на отдельных кристаллах по старым технологиям,
> а основной проц будет считать модели сразу..

Переход к аналоговым моделям это не шаг в будущее, а возврат к мрачному прошлому. В аналоговых схемах ошибки накапливаются экспоненциально, в цифровых происходит коррекция ошибок на каждом шаге, начиная с того, что мелкие колебания напряжения съедаются округлением до напряжений 0 или 1 в каждом транзисторе, и заканчивая http://www.eccpage.com/reed_solomon_codes.html, которые используются не только на носителях данных и в сетях, но даже при переносе данных на сколько-нибудь длинные расстояния внутри самого процессора. В результате аналоговые схемы, дающие хоть минимально сравнимую точность с цифровыми моделями, работают только на сверхъидеальном железе, помещённом в вакуумный корпус с жидкогелиевым охлаждением до долей Кельвина, в защищённом от света и тряски подвале в кожухе, экранирующем электрические и магнитные поля, под свинцовой плитой против космического ионизирующего излучения.

(Deleted comment)
akuklev June 26th, 2013
Тут вопрос в том, чего мы хотим добиться -- независимый ИИ или инструмент.

Если мы хотим использовать компьютер как инструмент (инструмент клерка и художника, дизайнера и инженера, музыканта и математика), обучающий апаарат, вычислительно-управляющую машину, идеальный инструмен выполнения указаний, "велосипед" человеческого мозга... то эмулировать человеческий мозг совершенно неразумно, т.к. именно с этими задачами он справляется хреново. То что сейчас любой компьютер может вычислить и промоделлировать за секунду, не способен за столетия вычислить отряд 20 миллиардов профессиональных расчётчиков и в этом смысле компьютеры давно круче и мощнее мозга. Объём памяти современных компьютеров также с некоторых пор превышает объем памяти человеческого мозга.

А если мы хотим ИИ для эвристик, оценок, эволюционного развития моделей и т.д., то тут как раз аналоговые структуры не ведают конкуренции. Но это вообще другое понимание "компьютеров", и имеет мало отношения к алгоритмам и программам в классическом понимании.

nicka_startcev June 21st, 2013
FPGA - теряем примерно порядок по производительности по сравнению с ASIC.
стопицот ядер - требуется резкое изменение подходов к программированию, иначе опять же теряем стопицот производительности в большинстве задач.

kray_zemli June 21st, 2013
А в чём нынче заключается большинство задач?

nicka_startcev June 21st, 2013
сейчас большинство задач - допиливание костылей в унаследованных системах, где авторы уже умерли, а два поколения переработчиков в ужасе сбежали.
большинство разработки - что-то модное вебдванольное.
меньшинство разработки - "вкорячить вебкит в телевизор, не сломав имеющиеся костыли для ПДУ".
самое маленькое меньшинство - разработка новых алгоритмов, всякий там фолдинг белков, перепиливание 32нм в 22нм техпроцесс, копипаста ядер в видеопроцессоре; перепиливание драйверов под новые ОС.

  • 1
?

Log in

No account? Create an account