|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 3, 2004 08:24:18 Известно, что машина складывает за 1 такт. add eax,ebx, к примеру. Но ведь операция сложения это ведь и сдвиги! Как же можно сложить, и при этом не сдвигая? |
|
|
Дата: Ноя 3, 2004 10:00:29 Те бы про триггеры всякие почитать.. Сдвиг-то это в твоём понимании, что куда-то что-то двигается. На самом деле ничего никуда не двигается. Арифметические операции раскладывается на логические. Cложение выполняется примерно так: An = S1n XOR S2n Carryn = S1n AND S2n - перенос в старший разряд Как учитывать перенос? Складывать его параллельно с последующими разрядами изменив схему сумматора: An = S1n XOR S2n XOR Carryn-1 Carryn = ( S1n AND S2n ) OR ( S1n AND Carryn-1 ) OR ( S2n AND Carryn-1 ) Я тут может где и напутал, но смысл такой: можно выполнять операции последовательно - получим простую схему и большое время выполнения, а можно параллельно - получим сложную схему и малое время. Усложнить ALU не проблема, сейчас основные транзисторы идут на кэш. |
|
|
Дата: Ноя 3, 2004 10:08:12 В свое время мне попалась книжка "Простейшая микроЭВМ", авторов не помню, за 1986г? Почитай, очень полезно. |
|
|
Дата: Ноя 3, 2004 10:52:43 EvilsInterrupt Если не очень понятно, то поищи в своих топиках ссылку на книгу C O D E, там Петцольд расписывает сложение на 15 страниц, и не менее подробно расписывает вычитание |
|
|
Дата: Ноя 3, 2004 11:45:34 в том то и дело что триггеры я знаю! Само стоятельно собирал на К155 серии! Но все таки не понятно как это за 1 такт! Даже не просто не понятно, а я бы сказал поражает |
|
|
Дата: Ноя 3, 2004 11:46:55 >An = S1n XOR S2n вот его то я вчера и заметил. Но подумал что глючит |
|
|
Дата: Ноя 3, 2004 13:30:18 EvilsInterrupt > "Но все таки не понятно как это за 1 такт! Даже не просто не понятно, а я бы сказал поражает" А что конкретно поражает, то что за 1 такт или то, что 1 такт на 3ГГц это 0.33нс ? Если первое, так это длительность такта выбирается исходя из задержки основных вычислительных и управляющих блоков, а не наоборот. Если второе, то основная причина задержки это перезаряд паразитных емкостей транзисторов и соединительных проводников. Не удивительно, что в процессорах за счет субмикронной ПП технологии и пониженного напряжениния питания удается на порядок уменьшить задержки по сравнению с дискретными элементами. Так что поражает скорее сама технология, нежели ее следствия. Кстати, если заговорили о К155, то и у обычных ТТЛ-элементов есть скрытые возможности, которые использовались в экспериментальной физике для субнаносекундных измерений. К примеру, известно использование RS триггеров на ТТЛШ-элементах в приоритетных дискриминаторах задержки с временем разрешения очередности подачи сигналов менее 100 пс, т.е. входные цепи триггера реагируют на изменения сигналов за десятки пикосекунд, а вот выходные сигналы устанавливаются сравнительно долго - за единицы наносекунд. |
|
|
Дата: Ноя 3, 2004 19:41:56 А что конкретно поражает, то что за 1 такт или то, что 1 такт на 3ГГц это 0.33нс ? ..а еще не стоит забывать что на P-4 АЛУ работает на удвоенной частоте процесоора... |
|
|
Дата: Ноя 4, 2004 01:36:21 раскрою вам страшную тайну. на самом деле испольщуются схемы быстрого переноса, так как латентность высшего разряда будет очень огромной для больших чисел и для частот 2ГГц за 1 так можно даже на интеловких высокочастоных транзисторах сложить не более чем 16 битное число. на самом деле машина не всегда прибавляет перенос от младшего разряда к старшему. числа делят на порции по 3-8 бит и суммирубт их как простые числа получается n бит+1 перенос с каждой порции. потом n бит складываются с битом переноса из младшей пары - тут сумматор вдвое быстрее так как надо сложить не бит А Б и перенос из младшего разряда, а только А и перенос. плюс перенос в следующую часть числа производится (операцией И над всеми битами с предварительного сумматора и переносом из младшей группы бит) ИЛИ бит переноса из предварительного сумматора. |
|
|
Дата: Ноя 4, 2004 01:57:30 · Поправил: Narkomanius это я к чему? сложение малых чисел занимает ясен пень меньше времени, а переносы после них генерятся очень быстро не для каждого бита, а для групп битов. 2n*s против (2*b*s)+(f*n/b)+b*s где s - задержка однобитного сумматора b-колво бит в блоке n-колво бит в слове f-задержка быстрого переноса для s=4 f=6 (примерно прикинул по колву пар МОП транзистров в цепочках) b=5 2*32*4=256 2*5*4+6*32/5+5*4=40+37+20=97 выигрыш в 2.5 раза. для каждых s,n свое b оптимально, а f- функция от b так как приходится делать операцию И от b+1 сигналов кстати буду рат если кто нибудь предложит быстрый аппаратный метод циклического сдвига. |
|
|
Дата: Ноя 4, 2004 09:13:44 flankerx > "..а еще не стоит забывать что на P-4 АЛУ работает на удвоенной частоте процесоора..." Это верно, но только для моделей 0,1,2, которые не дотягивают до 3ГГц. А вот для 3 модели (F3n) согласно IA-32 Optimization задержки ADD\SUB\AND\OR\XOR составляют 1 такт, а не 0.5 как для модели 2 (F2n). Так что на сегодняшний день минимальная задержка сложения на P4 все-таки где-то в районе 0.20-0.25 нс. Narkomanius > "раскрою вам страшную тайну... числа делят на порции ..." "Страшную тайну" можно раскрыть в любой книжке по основам аппаратных узлов ЦВМ: схемы формирования переноса подразделяются на последовательные (простые, но медленные), параллельные (быстрые, но сложные) и групповые (компромиссный вариант по сложности и быстродействию). |
|
|
Дата: Ноя 4, 2004 09:40:06 Может я не правильно понял вас, но кажется вы забыли. Что такт это 1 действие. Допустим 2+2. Если 5+5 то вам понадобиться два действия обнулить разряд единиц и учесть перенос. ТО есть 2 такта. В справочнике я вижу что операция add reg,reg выполнится за 1 такт! Каким макаром? Если там не мерено переносов может возникнуть! ЗЫ: Помнится мы проходили токой предмет, как Электронно Вычеслительные Машины. Так вот мы в ручную вычисляли и я точно помню, что в 4х разрядных числах к примеру 1010 и 1111, могло возникнуть хотя бы 1 перенос. Получается первым действием ты складываешь, вторым ты переносишь, перенос на кладывается. на возможную единицу в этом разряде, опять таки перенос. И как тут за 1 такт? (может я не правильно считаю, что 1 такт это 1 действие?) |
|
|
Дата: Ноя 4, 2004 09:59:58 · Поправил: leo EvilsInterrupt > "может я не правильно считаю, что 1 такт это 1 действие?" Конечно не правильно. Один такт - это шаг синхронизации последовательных действий. А разные действия могут выполняться и за 0.5 такта и за несколько тактов. Суть в том, что многие простые действия выполняются аппаратно за одну микрооперацию. В случае с суммированием на АЛУ просто подаются два складываемых числа и код операции. И все - дальше электроны сами бегут куда им следует, за какое-то время все добегают и успокаиваются - значит результат готов и его можно забирать. А вот чтобы его забрать в нужное время и существует тактовая синхронизация, поэтому все задержки в мануалах приводятся в целых тактах (для P4 - 0.5 такта). PS: Собственно сумматор - это чисто логическая схема без всяких триггеров. Каждый разряд результата это XOR соответствующих разрядов операндов и переноса - как расписал S_T_A_S_. Никаких шагов тут нет. В первое "мгновение" результат на выходе равен просто XOR двух операндов и какого-то мусора со схемы переноса и только младший разряд соответствует истинному результату. Но по мере того как "правильный" перенос "бежит" по своей схеме-цепочке биты результата корректируются и в итоге за время меньшее одного такта все выходные биты соответствуют истинному значению суммы. |
|
|
Дата: Ноя 4, 2004 11:51:29 leo ты прав, это я что-то привык. к синнхронизации! Спасибо всем за изложенный материал! Но это не значит, что нужно прекратить его выкладывание, быть может у кого-то не возникнут вопросы или возникнут, но исчезнут согласно топу |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.094 |