169 похожих чатов

Чуваки Как в ассамблере читается память? Возьмём например опкод MOV черед

который я хочу прочитать байт по определённому адресу в определённый регистр

Что происходит? Адрес идёт в MMU, дальше проверяется кеш, потом что? Может есть где-то этот workflow объяснён в общем виде

12 ответов

16 просмотров

Как это что? И получают, через контакты данных. Тебе непонятно с какой стороны обьяснять. Показать что-ли где они находятся, из каких элементов сделаны, или что?

Dmitry-Croft Автор вопроса
Алексей Шведов
Как это что? И получают, через контакты данных. Те...

Нужно что-то в этом духе (ниже псевдообъяснение): Адрес памяти из регистра A попадает в MMU, дальше проверяется кеш, если в кеше нашлось, то отдаёт если нет то идёт дальше и т.п.

Dmitry Croft
Нужно что-то в этом духе (ниже псевдообъяснение): ...

Адрес памяти из регистра A попадает в MMU, дальше проверяется кеш, если в кеше нашлось, то отдаёт если нет то идёт дальше по кэшу, если не нашлось - обращается по шине данных к RAM, если не нашлось, то ищет на накопителях, если не нашлось - на жёстких дисках

Dmitry-Croft Автор вопроса
Алексей Шведов
Адрес памяти из регистра A попадает в MMU, дальше ...

ладно, если у тебя нет настроения можешь не объяснять

Алексей Шведов
Адрес памяти из регистра A попадает в MMU, дальше ...

по крайней мере нам это дело в унике обьясняли именно так

к асму это получается не имеет отношения. с помощью асма мы говорим процу "сделай тото". как он это будет делать его проблемы (уровень абстракции). тебе наверное у процессоро строителей надо это спросить, а не у программистов

Dmitry-Croft Автор вопроса
Aiwan \ (•◡•) / _bot
к асму это получается не имеет отношения. с помощь...

Если есть чат по процессору строению то я бы спросил А вообще мне это нужно чтобы понять почему процессор работает медленнее с памятью, если она не выровнена. Я же так понимаю, что выравнивание каприза hardware Да, я видел объяснения где рассказывают что процессору придётся два раза обращаться к памяти чтобы собрать нужные байты в кучу, если память не выровнена. Но на физическом уровне я до сих пор не совсем понимаю почему процессор не читает с любого места и не загружает последовательно байты с этого места, и ему именно надо чтобы адреса были выровнены по размеру запрашиваемых данных

Dmitry-Croft Автор вопроса
Алексей Шведов
Как это что? И получают, через контакты данных. Те...

Я подумал что ты какой-то недовольный аля "щас докопаюсь". Но ты мне, кажется, помог продвинуться дальше, спасибо

Dmitry Croft
Я подумал что ты какой-то недовольный аля "щас док...

Просто я изначально вопроса не понял - думал, что ты хочешь узнать, как процессор ищет запрашиваемые данные. Пожалуйста

Dmitry-Croft Автор вопроса
Алексей Шведов
Просто я изначально вопроса не понял - думал, что ...

Это я тоже хотел знать, чтобы разобраться в выравнивании. А ты мне сузил круг до кеш линий

Dmitry Croft
Если есть чат по процессору строению то я бы спрос...

ну вот для х86 и х86-64 это устроено так начнем с того что само ядро имеет кешы первого уровня ядро - контрол юнит и алу(условно, мб там ещё для флоатов для крипты или ещё чего нам сейчас не важно) так вот контрол собственно заведует операндами, он берет их из кеша сам кеш это что-то вроде масива из set'ов. один set хранит несколько скажем 'линий'(но там не линия, как то по другому называлось, я забыл уже). в этой 'линии' есть тег(кусок адреса, он есть ключ по которому ищем), флаги, и кеш линия(собственно данные из памяти, то что мы и хотим загрузить из кеша в контрол юнит). пространство кеша ограничено, оно математически рассчитано так, что данные которые сохраняются в кеш линию выровнены на определенное парное число. проблема появляется когда я не выровнял что-то в памяти и для загрузки процесору нужно взять первую кеш линию, отрезать от неё кусок, а потом ещё и найти остачу нашей переменной в другой кеш линии.

Dmitry Croft
Если есть чат по процессору строению то я бы спрос...

Я уже писал про отсуствие (для экономии) нижних битов адресной шины. В пррцессоре куча блоков, соединений, промежуточных буфферов. Чтение блоками фиксированного размера в каждом подобном месте - частично экономия (и бюджета по энергопотреблению/температуре тоже) частично оптимальный дизайн во избежание проблем с синхронизацией и когерентностью. Вообще рекомендую сайт ixbt dot com - в нулевых и начале десятых там было много статей с подробными объяснениями как работают современные процессоры и их внутренними механизмы. Потом подсдулись в этом плане, но статьи есть по архитектурам вплоть до сэнди бриджа примерно очень подробные и более лаконичные по поледующим.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта