vak: (Улыбка)
[personal profile] vak
Дошёл до реализации необычного свойства процессора микро-БЭСМ, отсутствующего у современных компьютеров. Каждое слово в оперативной памяти имеет дополнительный бит запрета записи. При попытке записи по этому адресу возникает прерывание "защита адреса при записи". Чтобы всё-таки иметь возможность изменить значение (и бит запрета), память имеет дополнительный сигнал, отменяющий защиту.

Получается полезная возможность, похожая на const в языке Си, но при этом защиту можно включать и отключать по ходу выполнения программы. Что-то отдалённо похожее - теговая архитектура - существовало в некоторых ранних компьютерах, но не прижилось.

Date: 2016-12-15 00:17 (UTC)
From: [identity profile] skolk.livejournal.com
С SDRAM не работают, она скрыта за кэшом. Во всяком случае, запись всегда откладывается. Точнее, даже при отключенном кэше работает небольшой (порядка десятка слов) буфер контроллера SDRAM, и он работает как кэш, который отключить невозможно.
Edited Date: 2016-12-15 00:34 (UTC)

Date: 2016-12-15 07:27 (UTC)
From: [identity profile] 1801bm1.livejournal.com
>>запись всегда откладывается
Запись можно отложить если не предполагается исключения. А тут именно надо прочесть бит аттрибута, проверить его, и если не ОК, то генерировать исключение. Поэтому в данном случае все равно придется ждать считывания бита из SDRAM, его проверки, и только остаток операции (собственно саму запись, если допускается аттрибутом) можно буферизировать.

>>буфер контроллера SDRAM
Смотря какой контроллер, тут явно придется свой писать, чтобы реализовать запись транзакцией RMW в пределах открытия одной страницы.

Date: 2016-12-15 10:33 (UTC)
From: [identity profile] skolk.livejournal.com
>>Смотря какой контроллер, тут явно придется свой писать, чтобы реализовать запись транзакцией RMW в пределах открытия одной страницы.

А контроллер от ARM 15-летней давности разве так не делал?

>>Запись можно отложить если не предполагается исключения.
Запись откладывается на интерфейсе контроллер-SDRAM, исключение внутри CPU, на интерфейсе CPU-контроллер все чинно и по порядку. А вообще-то это гасится даже не крохотным буфером контроллера, а сравнительно огромным кэшом CPU. Поскольку строки кэша большие, по-моему, в режиме WB на шине (интерфейсе в сторону памяти) он всегда выполняет RMW.
Edited Date: 2016-12-15 11:12 (UTC)

Date: 2016-12-15 08:09 (UTC)
From: [identity profile] netch80.livejournal.com
Не как кэш, а как очередь. Это неизбежно при нынешней организации DRAM (чтобы в строку записать, надо её вначале открыть), но разница в том, что очередь эта соответствует очереди команд и синхронизирована с ней - не допускается записи из более поздних команд раньше, чем будет гарантировано выполнение более ранних команд.
Кэш, в отличие от, уже не имеет явной связи с историей выполнения команд.

Date: 2016-12-15 10:54 (UTC)
From: [identity profile] skolk.livejournal.com
Каких команд? Контроллер находится между шиной и ногами SDRAM.
Соответственно, мимо него никто не пишет-не читает, и он может записывать сколь угодно поздно. Я обнаружил этот буфер по тому, что из него удовлетворяется чтение. Ядро было 4K, остальные блоки от ARM, некэшируемое окно.

Date: 2016-12-15 13:13 (UTC)
From: [identity profile] netch80.livejournal.com
> Каких команд? Контроллер находится между шиной и ногами SDRAM.

Я имею в виду участок между исполнительными блоками процессора и кэшами.
То, что ты говоришь, сильно дальше от исполнительных блоков и ближе к RAM.

Date: 2016-12-15 13:38 (UTC)
From: [identity profile] skolk.livejournal.com
>>участок между исполнительными блоками процессора и кэшами
не должен иметь никакого представления о существовании SDRAM, которая более похожа на FBA DASD чем на RAM ;)

Date: 2016-12-22 17:09 (UTC)
From: [identity profile] netch80.livejournal.com
> не должен иметь никакого представления о существовании SDRAM,

Ну да, тут я криво выразился. Очередь на запись при отсутствии кэша в принципе та же, что при кэше, и она связана с выполнением команд в OoO-механизме.
Крис в своей книге про память подробно копал её работу (жаль, что на зверях не свежее P4, там пора бы всю книгу обновить на современном материале).

Date: 2016-12-22 18:49 (UTC)
From: [identity profile] 18cc.livejournal.com
Что за книга, где Криса?

Date: 2016-12-22 21:40 (UTC)
From: [identity profile] netch80.livejournal.com
Крис Касперски - Техника оптимизации программ. Эффективное использование памяти.