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

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

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

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

12 ответов

23 просмотра

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

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 - в нулевых и начале десятых там было много статей с подробными объяснениями как работают современные процессоры и их внутренними механизмы. Потом подсдулись в этом плане, но статьи есть по архитектурам вплоть до сэнди бриджа примерно очень подробные и более лаконичные по поледующим.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта