Перейти к содержимому

Froxyz

Присоединился: 26 мар 2009
Оффлайн Последний вход: июн 13 2011 10:00
-----

Мои сообщения

В теме:Arvutid-I

09 июня 2011 - 14:25

хе, мне тоже оба раза попадался один билет )

В теме:Arvutid-I

07 июня 2011 - 10:38

Реализуется в виде области в основной памяти.


Как правило, но не всегда. Бывает, что стек стоит вообще отдельно от памяти - под него выделено отдельное железо. И при этом доступа ни к его содержимому, ни к SP(stack pointer) нет, потому что стек полностью управляется логикой в железе и в нём хранятся только адреса возврата при вызове подпрограммы. Но такое используется только в простых процессорах, потому что не требуется городить отдельный доступ в память чтобы хранить там стек (это хорошо, упрощает архитектуру). На зато глубина такого стека жёстко зафиксирована и обычна невелика (это плохо, нельзя использовать много вызовов функций, вложенных друг в друга). пример - cpu в PIC микроконтроллерах http://www.gaia.h.ky.../pdf/16f62x.pdf (figure 2.1 и раздел 3.3.2)

В теме:Arvutid-I

07 июня 2011 - 01:40

Короче, насколько я понимаю, суть такая: конвейер в памяти нужен потому что обращение к памяти имеет задержки (а в процессоре он нужен для того, чтобы разбить исполнение инструкции на более мелкие операции, которые исполняются быстрее, и за счёт этого увеличить тактовую частоту). И если после каждого чтения (например) ждать эти задержки, то получится так, как на картинке "no pipelining". На этой картинке на такте T1 запрашивается чтение по адресу A1. Задержка (не памяти, а доступа) составляет 2 такта. Данные появляются на шине DQ только на такт Т3. Только после этого делается следующее чтение.

Чтобы не ждать эту задержку доступа каждый раз, придумали pipelining (другая картинка). Здесь чтение запрашивается на тактах Т1, Т2, Т3 без ожидания ответа. Чип памяти сохраняет эти запросы и последовательно их исполняет. И данные на запросы теперь приходят каждый такт (такты Т3, Т4, Т5), хотя задержка точно такая же - два такта (данные D1 с адреса A1 приходят только через два такта после запроса).

В итоге без конвейера на получения одного слова данных нужно три такта, а с конвейером - грубо говоря один такт (при более длинных последовательностях, например на 50 чтений надо 52 такта)

что касается interleaving, то это придумано потому, что память бывает медленная. Чтобы обращаться к памяти быстрее, чем каждый отдельный банк (отдельный массив ячеек памяти) может это переварить, делается обращение к банкам по очереди. На картинке показано, что операции на шине происходят в 4 раза быстрее, чем операции памяти. За выдачу данных D1 ответственен банк 0, за D2 - банк 1 и т.д. (показано стрелочками). может быть кому-нибудь пригодится

В теме:Arvutid-I

07 июня 2011 - 00:10

Kissmyastma, какая-то непонятная картинка. судя по наличию банков (pank), больше похоже на другой метод - http://en.wikipedia....erleaved_memory

В теме:Arvutid-I

06 июня 2011 - 23:58

Akhenaton, http://ru.wikipedia.org/wiki/SDRAM ? там немного про "конвейерная обработка"