Mar. 2nd, 2009

akuklev: (Default)
Решил посчитать, какое пиковое быстродействие могут дать существующие технологии процессоров и памяти.

С памятью ситуация следующая: наиболее быстрая технология чтения/записи из существующих MRAM STT (Spin-Torque-Transfer) обеспечивает задержку чуть меньше 1 наносекунды. Экспериментальный чип на 256 мегабит (= 32 мегабайта) такой памяти у меня будет в ближайшем будущем возможность лицезреть. Однако, MRAM последние лет 10-12 ждут примерно как прихода мессии (это энергонезависимая недеградирующая память, пригодная для замены Flash-накопителей и жестких дисков), так что вполне возможно, что мы и ещё лет 10 прождём, а потом появится какая-нибудь неожиданная технология ещё круче. Ладно, запомним, 1 ns.

Что у нас с процессорами?
Для спектра задач от ноутбука/десктопа до сервера среднего класса, практический предел распараллеливания наступает при конфигурации 4-8 cores × 2-3 pipes & 4-8 ALUs. На ядро может приходиться 32KB кеша первого уровня, доступ к которому занимает стандартные три такта. При таком количестве ядер и пайплайнов, переключение контекстов будет явлением не очень частым, и определяющим для быстродействия будет именно активный memory footprint тредов. Предел нынешней CMOS-технологии — 16nm-процесс. Это значит, что при разумных для ноутбуков энергозатратах тактовая частота упрётся в 8-10GHz. Это значит, что если использовать MRAM, кеш второго уровня не требуется:

Стоимость доступа к памяти в циклах
μ₁ = 3ν   # L1-cache (individual, порядок размера 32KB)
μ ≈ 10ν   # В SoC-системе с STT MRAM


Если же количество сожженных Ватт не беспокоит, то во-первых, можно перейти на 11nm технологический процесс (он нынче считается возможным, однако нужно тратить существенное количество энергии на компенсацию квантового туннелирования), а во вторых просто не скромничать (и охлаждать жидким азотом). Интел утверждает, что на этом пути можно будет достигнуть около 20GHz. Тогда кеш второго уровня (общий для всех ядер) нужен и сделать его можно будет этак мегабайт 8-16-32, оставаясь в рамках десяти тактов на доступ. Тогда будет иметься следующий расклад:

Стоимость доступа к памяти в циклах
μ₁ = 3ν  # L1-cache (individual, порядок размера 32KB)
μ₂ = 10ν  # L2-cache (shared, порядок размера 8MB)
μ ≈ 20ν  # В SoC-системе с STT MRAM


Эти соображения и соотношения, похоже, стоит держать в голове уже сейчас, если разрабатывается софт, который должен выйти через годик-два и будет работать не менее 5-7 лет после выхода.
akuklev: (Default)
Да, кстати. Конечно же, gcc поддерживает MMIX backend и, конечно же, существует виртуальная машина VMMMIX, на которой можно запустить специально портированный на неё Линукс.
А ещё сейчас, в семь утра через открытое окно пахнет травой. Я вот думаю, не рановато ли люди начали? :-)
akuklev: (Default)
На Perlmonks'ах в примерах кода повстречался знатный альфафил. Цитирую примеры его списков:
['az', 'buki', 'vedi', 'glagol'], ['alpha', 'beta', 'gamma'], ['aleph', 'beth', 'gimel'], ['ayb', 'ben', 'gim'], ['an', 'ban', 'gan']
Page generated Aug. 22nd, 2025 12:47 am
Powered by Dreamwidth Studios