как мы можем определить, какой объем памяти поддерживает этот процессор?

StackOverflow https://stackoverflow.com/questions/2482530

  •  21-09-2019
  •  | 
  •  

Вопрос

Я только начал программировать на языке ассемблера, и на первой лекции наш преподаватель рассказал нам об intel 8080 и intel 8085 и сказал, что у этих процессоров 64 кб памяти.

Теперь я хочу знать, как мы находим этот объем памяти с конкретным процессором, например, у меня процессор 1,8 ГГц, теперь, как я могу узнать объем памяти, который может быть использован с этим процессором.

что я пытаюсь спросить, так это скажите мне метод, как мы можем определить этот объем памяти?

Это было полезно?

Решение

Это зависит от того, сколько битов (физической) адресации поддерживает процессор, количество битов адреса обычно <= количество битов в регистре адреса, например

8085/Z80 - 16 bit address registers - 16 bit addressing - 64 kB address space
68008 - 32 bit address registers - 20 bit addressing - 1 MB address space
68000 - 32 bit address registers - 24 bit addressing - 16 MB address space
68020 - 32 bit address registers - 32 bit addressing - 4 GB address space

Обратите внимание, что многие 64-разрядные процессоры обычно поддерживают только что-то вроде 40-разрядного адресного пространства, т. е.1 ТБ.

Другие советы

Обычно процессоры сконструированы таким образом, что в одном целочисленном регистре может храниться адрес любой ячейки памяти.Следовательно, "максимальный объем памяти" определяется количеством битов в регистре (или процессоре).32 бита равны 4 ГБ.64 бита равны 16 эксабайты из оперативной памяти.

Зависит от архитектуры, но процессор будет ограничен количеством адресных строк, которые у него есть.В старом 32-разрядном процессоре pentium pro поддерживалось 36 адресных строк, и поэтому процессор мог поддерживать до 64 ГБ.Более поздние процессоры, такие как i7-860, который является 64-разрядным процессором, также поддерживают только 36 физических адресов и, следовательно, также ограничены 64 ГБ.Объем физического адресного пространства можно определить с помощью кода инструкции CPUID, другие процессоры могут использовать другие методы или требовать чтения таблицы данных.Похоже, вы изучаете x86, так что в этом случае CPUID - это то, что вам нужно, если ваш процессор его поддерживает.

На что вы указываете, ссылаясь на виртуальную память "memory" или физическую?В случае виртуальной памяти это 4 ГБ для 32-разрядных процессоров, хотя вы можете использовать не все из них, поскольку ОС использует ее часть.Также обратите внимание на PAE (расширение физического адреса) для вашего процессора и работает ли в ОС ядро PAE.Это даст вам более 4 ГБ физической памяти для установки и использования, но виртуальное адресное пространство по-прежнему останется 4 ГБ.Пожалуйста, взгляните :

http://en.wikipedia.org/wiki/Physical_Address_Extension

http://msdn.microsoft.com/en-us/library/aa366796 (v= против 85).aspx

http://msdn.microsoft.com/en-us/windows/hardware/gg487503

Ну, это зависит от определенных переменных.

Например, 8-разрядный процессор имеет значения до 255, которые были вычислены путем возведения 2 в восьмую степень и вычитания значения на единицу.Это число, 255, показывает, сколько байт может обработать центральный процессор, а объем оперативной памяти не может превышать этот объем.

Теперь давайте немного продвинемся вперед (без каламбуров).16-ит-процессор имеет значения до 65 535, и это снова было подсчитано путем возведения 2 в шестнадцатую степень, а затем вычитания на единицу (я уверен, теперь вы получили общую картину).Это означает, что у нас может быть 65 535 байт оперативной памяти, или 65,535 килобайта.Надеюсь, это начинает приобретать смысл.

32-разрядный процессор имеет значения до 4 294 967 295 (эти цифры становятся довольно большими).Это 4 294 967 295 байт, или 4.294967295 гигабайт оперативной памяти.Эта технология начала широко использоваться в 90-х годах, и сегодня она все еще остается полупопулярной.

Но, конечно, мы все знаем, как быстро и часто меняются технологии, так что да, существуют также 64-разрядные компьютеры, столь же хорошие, как и 32-разрядные технологии.На самом деле это самый распространенный тип процессора на сегодняшний день.Таким образом, они могут поддерживать значения 18,446,744,073,709,551,615.Да, и это также то, сколько байт он может вместить, что равно 18,446744073709551615 эксабайт.

И, хотя в настоящее время нет процессоров, способных вместить такое количество, существуют также 128-битные процессоры.Они могут содержать до 340,282,366,920,938,463,463,374,607,431,768,211,455 байт данных, что также равно 340,282366920938463463374607431768211455 ...гм...ну, некоторое измерение в байтах, которое оказывается больше, чем йоттабайты, и, насколько я знаю, за пределами этого нет никаких единиц измерения в байтах.Но, эй, это просто говорит вам о том, что 128-битный процессор может справиться со многим, и мы, возможно, увидим их в далеком будущем.Причина, по которой люди говорят 128-битный, 64-битный, 32-битный, 16-битный или 8-битный, заключается в том, что это намного проще, чем пытаться запомнить все те большие числа, которые каждое из них представляет.

Итак, я надеюсь, что это поможет.Я не уверен, что 8-разрядный вариант правильный, потому что я знаю, что NES имеет 2 килобайта оперативной памяти, что превышает 255 байт, но я знаю, что все остальное правильно.Если это неверно, вы могли бы провести некоторое исследование и от своего имени ;).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top