|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 04 Dec 2003 04:14:57 To : Oleg Drokin Subject : Re: Хочу купить комп домой. Что лучше взять Athlon XP 2400 или Celeron -------------------------------------------------------------------------------- >>> Oleg Drokin wrote: OD>>> В смысле от каждого проца отдельный "шланг" и все к той же самой памяти? OD>>> И как ты себе это представляешь? VN>> Hу, технически такое давно сделано. Общий массив памяти с несколькими VN>> "шлюзами", синхронизация доступа на уровне простейшей сериализации, OD> Э? Сериализации чего? запросов? Да. OD> Так а чем это от одной общей OD> шины отличается тогда? тем что она спрятана там внутри? Hу вот возьмём типичную общую шину. Тайминги в примере будут произвольные, но картину они отражают, думаю, адекватно. Такт 1: процессор 1 послал запрос чтения по адресу 0001. Такт 2: процессор 2 захотел прочитать память. Шина занята => он ждёт. Такты 2-5: спим, ждём ответа. Такт 6: пришёл ответ. Отработали. Шину освободили. Такт 7: процессор 2 послал запрос чтения по адресу 0022. Такты 8-11: спим, ждём ответа. Такт 12: пришёл ответ. Отработали. Шину освободили. И так далее. Итого 6 тактов на одно чтение из RAM. Похоже? Если что-то тут принципиально неверно, говори сразу. Теперь представим себе, что было бы, если бы было две шины. Уже не 12 тактов, а 7. (Предполагая, что они не лезут в одно и то же место в памяти.) За такты 1-6 первый процессор получает ответ, за 2-7 - второй. VN>> несколько параллельных шин и использование одним процессором только одной VN>> такой шины. Так как передача команды чтения/записи сейчас происходит VN>> значительно быстрее, чем реальное чтение/запись. OD> Hепонял логики. То есть по твоему мнению, если к винту прицепить два шолейфа OD> и гнать по обоим запросы (случайные, само собой), то все станет в два раза OD> быстрее? Аналогия с винтом неудачна. У него последовательный доступ в том смысле, что одновременно может читаться только один цилиндр. У RAM не так, чтение/запись разных ячеек может выполняться параллельно. У динамической памяти основная задержка - на чтение состояния ячеек, которые упрощены до предела (транзистор плюс конденсатор, который сделан фактически частью того же транзистора). Всё остальное - дешифраторы, усилители, буфера - вносит ничтожную задержку - см. скорость работы кэшей (L1, L2 - неважно). Поэтому, параллельный доступ с разных сторон к разным ячейкам оказывается такой же по скорости, как и один доступ к одной ячейке. Hо, кстати, и в случае винта не всё так просто. Вспомни TCQ - такая себе простая аналогия нескольких шин. В его случае, пока результат одного чтения лежит в буфере и начинает передаваться контроллеру, винт уже может заниматься выполнением следующей команды. Вряд ли это даст больше пары десятков процентов скорости, но тоже ведь на дороге не валяется... EBB>>>> когерентности кэшей. Которое обязано быть синхронным и надежным. OD>>> Даже если принять во внимение возможность такого варианта, мои слова не OD>>> перестают быть менее верны, потому что тогда кеши и шина по которой они OD>>> синхронизируются и есть та самая узкая дырка ;) VN>> Её можно расширить, хоть и не самым дешёвым путём. OD> Так и память можно ускорить ;) OD> И эффект будет значительней. Это дороже. Статическая память значительно быстрее (раз в 10), но и в ~10 раз дороже. Это можно увидеть по любому прайсу на модули или на микросхемы. А вот сколько бы стоило построение схемы с параллельным доступом к динамической памяти хотя бы с двух сторон, я не представляю себе даже приблизительно. -netch- --- ifmail v.2.15dev5.1 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.linux/7368c63c2b2f.html, оценка из 5, голосов 10
|