1 | |
Есть ли накладные расходы при чтении 1го байта?25.07.2021, 01:21. Показов 1017. Ответов 12
Метки нет (Все метки)
Смотрел я как работают Ассемблеры. Если я правильно понял регистр оперирует 4 байтами(грубо говоря), может уже посильнее есть процессоры. Нашёл сайт где человек показывал устройство регистра, внутри него есть дополнительные функции например регистр может проводить математические операции, логические операции и часть регистра может быть отдана под это дело но весь регистр может быть общего назначения.
И мне вот интересно если ячейка памяти в частности весь регистр 4 байта будут ли накладные расходы чтобы читать из него 1 байт или нет ведь многие регистры поделены и могут выполнять сразу несколько функций? Я так понимаю что в любом случае если регистр читает 1 байт то он весь занят или нет, может ли он ещё что-то делать одновременно с чтением этого байта?
0
|
25.07.2021, 01:21 | |
Ответы с готовыми решениями:
12
Накладные расходы при создании лямбды Влечет ли std :: atomic накладные расходы на одноядерные процессоры? Вывести значение переменной или константы больше 1го байта Как посчитать сколько цифр из 1го числа есть во 2м? |
Native x86
5594 / 3338 / 951
Регистрация: 13.02.2013
Сообщений: 10,587
|
|
25.07.2021, 01:51 | 2 |
Любой мало-мальски актуальный процессор имеет регистры общего назначения шириной 8 байт (64 бита). Регистры SIMD-расширений могут иметь ширину до 256 бит.
Как таковых накладных расходов нет. Но тут смотря как считать. Просто любое действие с 64-битным регистром RAX выполняется столько же времени, сколько аналогичное действие с его 8-битным подмножеством AL или AH. Т.е. при взаимодействии с 8-битным AL/AH мы как бы делаем в 8 раз меньше полезной работы за то же время, чем могли бы выполнить, если бы работали с RAX. Другой вопрос, что далеко не всегда нужно 64 бита ширины для выполнения нужного нам действия над данными. Это крайне дискуссионный вопрос. Современные процессоры очень сложны, в них используется масса не очевидных оптимизаций. Запросто может оказаться, что две стоящих рядом элементарных операции над AH и AL будут выполнены одновременно за один такт, не смотря на то, что AH и AL -- части одного регистра AX/EAX/RAX. А может и не будут. Сильно зависит от самих инструкций и от общего контекста.
2
|
25.07.2021, 02:13 [ТС] | 3 |
А регистр RAX может разбиваться на 2 регистра по 32 бита или это отдельные регистры, мне всегда было интересно как они пакуются?
Добавлено через 1 минуту видимо оно так и есть по вопросу выше что я спрашивал. Наверное вопрос в том происходит ли это со всем процессорами.
0
|
Native x86
5594 / 3338 / 951
Регистрация: 13.02.2013
Сообщений: 10,587
|
|
25.07.2021, 02:32 | 4 |
Нет. Именно RAX (и все остальные 64-битные) состоит из EAX и безымянной верхней половины, к которой отдельно добраться можно только сдвигом вправо. Впрочем, EAX точно так же состоит из нижней половины AX и безымянной верхней. Разницы почти нет.
Точного ответа нет. Современные процессоры гарантируют только то, что в результате выполнения любой последовательности инструкций, регистры будут содержать определенные значения. А вот время выполнения этого набора не детерменирована.
1
|
25.07.2021, 06:01 [ТС] | 5 |
Значит некоторые регистры например 64 битные расположены отдельно он 32 битных. Я думал они могут просто дробиться мне кажется это было бы более эффективно. Например если есть 2 запроса в процессор на 32 бита то можно собрать 2 регистра и запустить 2 процесса, а так получается не очень. Ну всё же знать как оно устроено довольно трудоёмко, читать нужно материалы какие-нить интересные.
Если читается 1ин байт то наверное все 32 бита коту под хвост, пока регистр не освободится новая задача которая на него претендует не запустится, вне зависимости от того сколько байт она требует 1 2 или 4, мне кажется так.
0
|
Модератор
|
|
25.07.2021, 09:35 | 6 |
Процессоры ?
Возможны разные аппаратно-микропрограммные реализации одной и той же архитектуры. В конце концов можно на С++ или на python написать чисто программный симулятор. В высокопроизводительных машинах физических устройств хранения, которые можно использовать в качестве GPR, внутри процессора обычно больше, чем количество программно доступных GPR, определённых архитектурой ЭВМ, особенно если эта архитектура родом из 1960-1980-х, и регистров там не больше 16. Это позволяет, если повезёт, параллельно выполнить несколько ветвей вычислений, конфликтующих по данным. Вычисления выполняются не совсем так, как написано в программе, но конечный результат тот же.
1
|
15.03.2022, 00:27 [ТС] | 7 |
Решил поинтересоваться ещё раз этой темой. По ссылке https://ru.wikipedia.org/wiki/... 1%80%D0%B0 есть интересное описание. Мне интересно если происходит чтение регистра AH то чтение AX уже невозможно? Если происходит чтение AX то чтение EAX невозможно? Если происходит чтение EAX то чтение RAX невозможно? Если происходит чтение AH то чтение AL тоже невозможно?
Имеется в виду если читается малый регистр то уже чтение остальных регистров из этого большого блока невозможно? А пустые поля слева что означают там какие регистры?
0
|
1562 / 1488 / 248
Регистрация: 19.02.2010
Сообщений: 4,045
|
||||||
15.03.2022, 01:52 | 8 | |||||
Всё возможно. На чтение регистра-источника (при командах пересылки / сравнения / арифметических) никакого лока нет.
Т.е. подобный набор команд сейчас (на современных процессорах с большим числом портов в ядре) может быть выполнен одновременно и параллельно:
Тебе же уже про это говорили в посте #4 - про безымянные части регистров. Регистры есть - но нет символьных мнемоник (для ассемблера) и двоичных кодов (у процессорных команд) для адресации к некоторым частям этих регистров.
1
|
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
15.03.2022, 14:47 | 9 |
Nexi99,
1
|
15.03.2022, 19:36 [ТС] | 10 |
если из общего модуля (например 64-ого) читается 1ин байт, т.е. читаются данные из самых маленьких регистров, то значит можно параллельно читать остальные такие маленькие однобайтовые регистры, т.е. параллелизм?
0
|
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
15.03.2022, 20:18 | 11 |
Если меняется AL, то можно выполнить команду с изменением/анализом АН,
НО, если меняется AL, то нельзя выполнить команду с изменением/анализом АХ.(и т.д. вплоть до RAX). Пока Вы не изучите структуру процессора-ядра, Вы будете заниматся демагогией, ломая свою "клаву", задавая "философские" вопросы, т.е. ниочем:-"Привет, у меня 64 рубля, какие у меня тапочки?" Думайте пока!
0
|
15.03.2022, 23:36 [ТС] | 12 |
ну я об этом и написал ранее что если читаются нижестоящие регистры, то получается что вышестоящий уже не прочитать, что в принципе логично, но прочитать регистры такого же типа можно. Например если читается 1-байтовый то можно параллельно прочитать соседний такой же, там конечно есть определённые нюансы и ограничения, но работает это примерно так.
Я так смотрю что многие регистры у Интел и AMD то же совпадают, ну а в дальнейшем процессоры модифицируются и могут сильно отличаться: как по маркам имеется в виду сами регистры так и по версиям, или по версиям не сильно отличаются? Читал что в новые версии добавляются новые регистры, по 1му из законов Мура, который гласит, что количество транзисторов в процессорах удваивается каждые 24 месяца. Есть обратный закон по моему от Амдала точно не помню, который гласит рано или поздно процессоры себя изживут и их мощность нельзя будет увеличить и придётся искать новые варианты по разработкам процессоров. Частично проблему решают параллелизмом, т.к. параллелизм не зависит от последовательных вычислений. Да это конечно трудоёмкая тема.
0
|
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
16.03.2022, 16:38 | 13 |
Не смотрите, а учите: AMD клон Intel, до х586-го. Вернее изготовлялся по лицензии Intel, как продукт дочернего производства. Потом AMD, решил стать самостоятельным и после этого начались разногласия к подходу к технологиям.
Но это Вы должны были сами вычитать. Пардон - Вы читать умеете? Вы упорно не хотите читать о том, что Вам советуют и продолжаете задавать "философские" вопросы. Вы так и не ответили на мой вопрос:
0
|
16.03.2022, 16:38 | |
16.03.2022, 16:38 | |
Помогаю со студенческими работами здесь
13
"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла Крашится сеть предприятия, при отключении 1го ПК в сети Запрос на добавление, переносящий данные из справочника "Расходы на продукт" в таблицу "расходы" Формирование отчета "Доходы и расходы предпринимателя при общей с Старший бит старшего байта поменять местами с младшим битом младшего байта При закрытии месяца все расходы по з/п кидает на одно подразделение (д Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |