vak: (Default)
[personal profile] vak
Наконец, наступил день, когда можно рассказать публике немного о том, чем мы тут занимаемся.  Сегодня, 10 мая наша фирма официально обнародует информацию про новые процессорные ядра.  Больше года куча замечательных специалистов кипела, бурлила, брызгала идеями и воплощала их в железе.  И вот мы сделали нечто, пора выставить его на всеобщее обозрение.

Три ядра:
  • proAptiv - для самых высокопроизводительных приложений, в том числе мобильных гаджетов.
  • interAptiv - для применений с самым низким потреблением на единицу производительности.
  • microAptiv - для микроконтроллеров, включая цифровую обработку сигналов (DSP).
Ближайшие конкуренты - соответственно ARM Cortex A15 (еще не вышеший), Cortex A9 и Cortex M4.  Подробности с цифрами есть в статье на сайте Electronics Weekly.

    Core           Coremark/MHz
    ---------------------------
    MIPS proAptiv      4.42
    ARM Cortex A15     4.1   (моя оптимистическая оценка)
 
    MIPS interAptiv    3.2
    ARM Cortex A9      2.9
 
    MIPS microAptiv    3.1
    ARM Cortex M4      2.19

Оценку скорости Cortex A15 я интерполировал исходя из предсказаний ARM по скорости DMIPS/MHz для A9 и A15.  Остальные цифры для ARM получены гуглением из разных тематических статей.  Здесь показана только скорость: по площади кристалла и по милливаттам/МГц тоже имеется существенное преимущество.



Несколько графиков из статьи в EETimes:







Date: 2012-05-11 09:13 (UTC)
From: [identity profile] evgen2.livejournal.com
йик. Не может быть!
Всегда и везде нужно было сохраняться-восстанавливаться явно или неявно.
Я отстал от жизни или вы первые ?

Date: 2012-05-11 18:37 (UTC)
From: [identity profile] hogzie.livejournal.com
Не знаю, как в MIPS. В ARM два вида прерываний. FIQ и IRQ. Первый более высокого уровня. Половина старших регистров просто ремапятся на новые. Сохранять остальные в стеке - это забота программиста. Ну и стеков тоже несколько. :) В IRQ только два регистра ремапятся. Остальное - опять же, как программист пожелает.

Date: 2012-05-11 19:14 (UTC)
From: [identity profile] panchul.livejournal.com
То, что обсуждается - это не прерывание в обычном смысле. См. http://ramlamyammambam.livejournal.com/185325.html?thread=1558253#t1558253

Date: 2012-05-15 19:51 (UTC)
From: [identity profile] hogzie.livejournal.com
А, понял. Спасибо. Про выделенный thread не знал.

Date: 2012-05-11 19:22 (UTC)
From: [identity profile] evgen2.livejournal.com
>Сохранять остальные в стеке - это забота программиста.
уже нет ;-)

void QEI_IRQHandler (void)
{
LPC_QEI->QEICLR = 0x0010; /* clear interrupt flag */
errXpos++;
t0_err = LPC_TIM1->TC;
err_lamp = 1;
return;
}
------------
И как там внутре неонка устроена меня не волнует

Date: 2012-05-11 19:13 (UTC)
From: [identity profile] panchul.livejournal.com
Это строго говоря не "прерывание". Имеется в виду hardware-supported multi-threading (многопоточное исполнение на одном ядре) и gated storage. Я об этом раньше писал:

Для аппаратной реализации MT внутри процессора имеется несколько копий пользовательских регистров общего назначения и программного счетчика (program counter) – по одной копии на каждый аппаратно реализуемый тред. Между стадиями конвейера, которые извлекают команды для разных тредов из памяти, и стадиями, которые исполняют команду, находится специальный диспетчер, который решает, команду из какого треда следует запустить на исполнение в следующем цикле. Если предыдущая команда из некоторого треда чего-нибудь ждет (наполнения кэша или ввода-вывода), то выбирается команда из какого-нибудь другого треда.

Также снаружи к ядру подключается модуль межтредовой коммуникации (Inter Thread Communication – ITC), который позволяет дизайнеру системы аппаратно реализовать такие примитивы как семафоры и очереди, похожие на семафоры и очереди, реализуемые в операционных системах реального времени программно. Тред общается с этими примитивами с помощью обычных операций чтения и записи определенных адресов памяти. Также через интерфейс ITC тред может ожидать внешнего события или информации от другого ядра в многоядерных системах. С этими механизмами дизайн систем приобретает новую размерность – вместо оптимизации скорости реации на прерывание становится выгодно создавать треды, работающие совсем без прерываний и обменивающиеся данными с другими тредами через ITC.

Кроме поддержки «легких» пользовательских тредов MT ASE позволяет конфигурировать ядро MIPS 34K с двумя «виртуальными процессорными элементами» (Virtual Processor Element, VPE), с каждым из которых связана копии не только пользовательских регистров, но и регистров привилигированного режима ядра. Это позволяет исполнение на одном ядре одновременно двух операционных систем. Одна из таких систем может быть быстрой системой реального времени для обработки критических событий, а другая – операционной системой общего назначения, например встроенной версией Linux.