ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
435135 Топик полностью
=AlexD= (22.08.2013 07:15, просмотров: 71) ответил Evgeny_CD на А Вы понимаете, как оно работает?
Да, я досконально разбирался с внутренней структурой, системой команд, более того, по моей просьбе проводили разработчики некоторые тесты. Я остался недоволен реализацией, хотя сама идеология очень перспективная. Мультиклет - это процессор с внеочередным исполнением команд, в котором система команд заточена на ликвидацию ложных зависимостей в потоке команд. Поток инструкций бьётся на наборы команд называемые параграфами. Внутри параграфа все команды (даже переходы) могут выполниться в любом порядке, главное, что-бы для них были готовы операнды, соответственно команды загрузки из памяти выполняются одними из первых, т.к. они не зависят от других команд. Далее исполняются другие команды, которым нужны операнды, и для которых операнды получены. После исполнения всего параграфа происходит переход к исполнению другого параграфа (или прерывания), адрес которого должен быть к этому моменту вычислен. Лень пересказывать, там много непривычных особенностей в архитектуре. К сожалению некоторые недоделки/недодумки/упрощения в архитектуре и реализации сильно ограничивают достижимую производительность на нечислодробильном коде. 1 Отсутствие теневых регистров коммутатора не позволяет обработать прерывание внутри параграфа 2 отсутствие кеша коммутатора не позволяет исполнять инструкции "на лету", только после декодирования и заполнения буфера декодированных МОПов 3 отсутствие кеша коммутатора не позволяет ссылаться на операнды предыдущего параграфа - приходится гонять данные через регистровый файл 4 отсутствие буферирования (барабана) регистрового файла невозможно начать исполнение следующего параграфа, даже если адрес перехода уже известен (хотя может начаться декодирование инструкций) 5 Не самым оптимальным образом решена проблема зависимостей по чтению/записи в память 6 Статическое распределение команд по клеткам может привести к ситуации, когда все готовые к исполнению команды могут сидеть в буфере одной клеткой, и исполняться последовательно, в то время как другие клетки будут простаивать. Отчасти проблему должен решать грамотный компилятор, но он у них пока тупой как пробка, да и лишние nop'ы увеличат расход памяти. 7 Статическое распределение команд по клеткам и отсутствие предекодера приводит к дырам(пузырям) в памяти, т.к. начало параграфа должно попадать обязательно в первую клетку - выравнивание параграфов по 32*4 байт (обещали вылечить в следующей версии) 8 Все команды 32 бита - жрёт память как свинья, а начиповой памяти не сказать что много, внешней памяти нет (обещали контроллер памяти в следующем чипе, но непонятно что будет с кешем). 9 Весьма черезжопная работа со стеком, фактически его там нет, всё делается вручную, в этой части вообще нихрена не продумано и похоже даже идей нет. Может что-то ещё забыл. Да, скорее всего моя писанина для всех тарабарщина, ну звиняйте ;-)
Три кита на которых зиждется реклама: враньё, преувеличение, замалчивание. Новости СМИ - это политическая реклама.