Защита адреса при записи
2016-12-10 15:16Дошёл до реализации необычного свойства процессора микро-БЭСМ, отсутствующего у современных компьютеров. Каждое слово в оперативной памяти имеет дополнительный бит запрета записи. При попытке записи по этому адресу возникает прерывание "защита адреса при записи". Чтобы всё-таки иметь возможность изменить значение (и бит запрета), память имеет дополнительный сигнал, отменяющий защиту.
Получается полезная возможность, похожая на const в языке Си, но при этом защиту можно включать и отключать по ходу выполнения программы. Что-то отдалённо похожее - теговая архитектура - существовало в некоторых ранних компьютерах, но не прижилось.
Получается полезная возможность, похожая на const в языке Си, но при этом защиту можно включать и отключать по ходу выполнения программы. Что-то отдалённо похожее - теговая архитектура - существовало в некоторых ранних компьютерах, но не прижилось.

no subject
Date: 2016-12-15 00:17 (UTC)no subject
Date: 2016-12-15 07:27 (UTC)Запись можно отложить если не предполагается исключения. А тут именно надо прочесть бит аттрибута, проверить его, и если не ОК, то генерировать исключение. Поэтому в данном случае все равно придется ждать считывания бита из SDRAM, его проверки, и только остаток операции (собственно саму запись, если допускается аттрибутом) можно буферизировать.
>>буфер контроллера SDRAM
Смотря какой контроллер, тут явно придется свой писать, чтобы реализовать запись транзакцией RMW в пределах открытия одной страницы.
no subject
Date: 2016-12-15 10:33 (UTC)А контроллер от ARM 15-летней давности разве так не делал?
>>Запись можно отложить если не предполагается исключения.
Запись откладывается на интерфейсе контроллер-SDRAM, исключение внутри CPU, на интерфейсе CPU-контроллер все чинно и по порядку. А вообще-то это гасится даже не крохотным буфером контроллера, а сравнительно огромным кэшом CPU. Поскольку строки кэша большие, по-моему, в режиме WB на шине (интерфейсе в сторону памяти) он всегда выполняет RMW.
no subject
Date: 2016-12-15 08:09 (UTC)Кэш, в отличие от, уже не имеет явной связи с историей выполнения команд.
no subject
Date: 2016-12-15 10:54 (UTC)Соответственно, мимо него никто не пишет-не читает, и он может записывать сколь угодно поздно. Я обнаружил этот буфер по тому, что из него удовлетворяется чтение. Ядро было 4K, остальные блоки от ARM, некэшируемое окно.
no subject
Date: 2016-12-15 13:13 (UTC)Я имею в виду участок между исполнительными блоками процессора и кэшами.
То, что ты говоришь, сильно дальше от исполнительных блоков и ближе к RAM.
no subject
Date: 2016-12-15 13:38 (UTC)не должен иметь никакого представления о существовании SDRAM, которая более похожа на FBA DASD чем на RAM ;)
no subject
Date: 2016-12-22 17:09 (UTC)Ну да, тут я криво выразился. Очередь на запись при отсутствии кэша в принципе та же, что при кэше, и она связана с выполнением команд в OoO-механизме.
Крис в своей книге про память подробно копал её работу (жаль, что на зверях не свежее P4, там пора бы всю книгу обновить на современном материале).
no subject
Date: 2016-12-22 18:49 (UTC)no subject
Date: 2016-12-22 21:40 (UTC)