Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Про мифический "1 MIPS/MHz"
Отправлено
Токовый клещ (95.26.19.224) 11 марта 2010, г. 08:21
Хотя нигде не говорится об этом прямым текстом (интересы маркетинга превыше всего), но думаю, что каждый внимательный читатель даташитов МК прекрасно это понимает. Давайте обсудим это вслух. Подумаем, как можно сделать один мипс на мегагерц?
Первый способ очевиден, но не прост в реализации - распараллеливание выполнения инструкции на несколько конвейеров. Если инструкция выполняется N тактов и имеется N параллельных конвейеров, то получим честный 1 мипс/мгц. Но при этом получим хардварный геморрой:
а) с алгоритмом наилучшей состыковки двух идущих подряд инструкций для планирования их по конвейерам,
б) с отслеживанием ещё не сохранённых в память или регистры данных, только что записанных первой инструкцией и сразу следом читаемых второй инструкцией,
в) с выполнением условных переходов,
софтварный геморрой с непредсказуемостью времени выполнения кода,
маркетинговый геморрой чтобы убедить покупателей, что выполнять инструкцию за N тактов вместо одного такта - это вовсе не моветон.
репутационный геморрой извиняться за ошибки реализации, из-за трудноуловимости обнаруженные спустя год после начала выпуска чипа (вспомните многочисленные хождения пентиумов по граблям).
Короче, конкуренты съедят живьём раньше, чем наступит время успеха и коммерческой стабильности. Интел мог себе такое позволить, т.к. был фактически законодателем мод.
Второй способ - повысить частоту, но об этом никому не сказать. :) Как выполняется типичная однотактовая операция в аврках, напр., прибавить к регистру регистр? За три этапа: загружаем данные в алу, выполняем сложение и выгружаем результат в регистры. Может ли это выполниться за один такт? :) Это выполняется за три такта. Но это "другие" такты. Такты, про которые говорят в ДШ - это "флешёвые" такты, соответствующие скорости извлечения инструкций из памяти программ. Но остальная, "числодробительная" часть МК может работать в три раза быстрее. И она именно так и работает. Но "скрытно" - в ДШ об этом ни слова, только намекающая на истину временная диаграмма где-то в начале документа. Эти утроенные такты не афишируются. Однако знание об этих "скрытых" тактах позволяет объяснить одну странность аврок. Зачем, скажите пожалуйста, у ядра с "Fully Static Operation" в ДШ стоит ограничение на максимальную разницу длин соседних периодов внешней тактовой частоты в 2% ? Если оно fully static, то ядру должно быть пох. Разгадка проста - внутри аврок стоит скрытая маркетингом PLL-ка, утраивающая "флешёвую" частоту для работы алу. Не верите? Проведите эксперимент: тактируйте аврку сначала долго и стабильно 12 МГц, а потом резко (в течение одного такта) измените внешнюю частоту на 20 МГц. 100%-но словите глюк при выполнении следующей инструкции - её фаза сохранения результатов вычислений будет запорчена внезапно начавшимся следующим тактом.
А реклама атмела похожа на сказку - у микрочипа 4 такта на команду, у нас - 1 такт. Ловко вешают лапшу!
Однако, несмотря на эту рекламную ложь, архитектура с утраиванием тактов, конечно, предпочтительнее - тут спору нет.
Составить ответ | Вернуться на конференцию
Ответы
- почитайте вместо даташита исходник любого "RISC" проца на opencores - yes (11.03.2010, 18:09:1 89.175.180.246, 290 байт)
- А как Вы видите ГУН ФАПЧ с таким перекрытием по частоте? - Кидало (11.03.2010, 13:12:0 87.252.227.56, пустое)
- Мало что понял, но читать интересно было:) - Двоешник (11.03.2010, 10:43:39 193.200.150.82, пустое)
- Столько букв, и только для того, чтобы в очередной пнуть Атмел?! Есть другой честный параметр (+): - argus98 (11.03.2010, 09:30:53 81.22.205.230, 263 байт)
- И охотаж была аффтору ради такого высера стока букав на клаве топтать... - F8 (11.03.2010, 09:24:10 95.132.239.28, пустое)
- Для "1 MIPS/MHz" нужно всего-навсего отказаться от конвейера, и всё. Правда частоты снизятся, ну зато всё строго )) - AlexD (11.03.2010, 09:15:10 192.168.1.45,82.193.128.242, пустое)
- Ну что за чушь опять про "размножение клока" в АВР. Конвейер там, кон-вей-ер! Исполнение происходит по обоим фронтам такта, всего на инструкцию 3 фронта (1.5 такта). - AlexD (11.03.2010, 09:12:41 192.168.1.45,82.193.128.242, пустое)
- Может конвеер - слишком громко сказано? Насчёт умножения частоты - навряд-ли, тем более, что это замтно должно быть - фон умноженной частоты можно заметить приборами. - mandigit (11.03.2010, 09:12:39 91.79.39.111, 462 байт)
- У АВР вообще-то нет инструкции за 1 такт. Типовая инструкцыя за 2 такта выполняется и об этом прямо говорится при описании конвеера.. Это целых 4 фронта. - VasilyS (11.03.2010, 08:32:19 80.92.96.25, пустое)
- Ответ: Вообще-то для конвейер нужен один. В одном конвейере длиной Н может одновременно исполняться Н команд на разных стадиях. Про "скрытые" такты, пофиг. - Artem-1.6E-19 (11.03.2010, 08:27:54 77.87.39.155, пустое)