2

Недавно я думал о том, как 32-разрядные процессоры могут поддерживать только до 4 ГБ памяти, и я не мог понять, почему количество бит, которое имеет процессор, ограничивает его память. Я понимаю, что, как и другие вопросы здесь, утверждают, что двоичное число с 32 цифрами может адресовать только до 4 ГБ. Но почему компьютер не может использовать две переменные для ссылки на память и эффективно «действовать», как будто она 64-битная (вроде как 32-битные процессоры могут использовать 64-битные целые числа)?

Возможно ли это и приведет ли это к снижению производительности? Если это приведет к снижению производительности, что если операционная система использует «поддельные» 64-битные ссылки на память в определенных программах, а не в масштабе всей системы?

3 ответа3

3

Статья Википедии о PAE: «В оригинальных выпусках Windows XP и Windows XP SP1 использовался режим PAE, чтобы разрешить ОЗУ превышать предел адреса в 4 ГБ. Однако это привело к проблемам совместимости со сторонними драйверами, что привело к тому, что Microsoft удалила эту возможность в Windows XP с пакетом обновления 2. "Некоторые" версии 32-разрядных версий Windows (Windows XP SP2 и более поздние версии, Windows Vista, Windows 7) ограничивают физический адрес места для первых 4 ГБ для совместимости драйверов с помощью механизма ограничения лицензирования ».« Microsoft Windows поддерживает PAE, если загружается с соответствующей опцией, но, по словам Джеффа Чаппелла, Microsoft может ограничить 32-разрядные версии Windows до 4 ГБ как вопрос его лицензионная политика. "

Блог, приписываемый Марку Руссинову: «32-битная Windows будет продолжать игнорировать память над ней, потому что все еще есть некоторые трудно измеримые риски, и OEM-производители (или, по крайней мере, должны) переходить на 64-битную Windows, где это не проблема».

32-разрядный Windows 2000 DataCenter поддерживает до 32 ГБ, а новые версии до 64 ГБ.

Позже в статье в Википедии обсуждается FreeBSD и говорится: «Не все драйверы поддерживают более 4 ГБ физической памяти; эти драйверы не будут корректно работать в системе с PAE». Таким образом, проблема совместимости драйверов преследует больше, чем Microsoft Windows.

Итак, в заключение, нет технической причины, по которой для программного обеспечения было бы абсолютно невозможно ссылаться на более чем 32 бита адресного пространства. Усовершенствования / обходные пути, подобные тому, что вы теоретизируете, могут существовать, но такая поддержка не получила широкого распространения, по-видимому, из-за совместимости и проблем стабильности.

3

Почему объем оперативной памяти, используемой компьютером, ограничен битами процессора? Это не так. Исторически это не было с примерами, где размер адреса был больше или меньше, чем "разрядность" процессора.

Посмотрите на 8-битные процессоры, такие как 6502 и Z80 с адресом 64 КБ. 16-битный 8086 адресован 20 битам, а 16-битный 80286 24 битам.

С другой стороны, 32-битная Motorola 68000 имела 32-битную адресацию, но работала только с 24-битными проводами, ограничивая ее до 16 МБ. Каков подход к 64-разрядным чипам, о которых я знаю, они не используют 64 линии для внешнего мира.

Когда создавались 32-разрядные архитектуры, объем памяти 4 ГБ был намного выше понимания. 80386 был представлен в 1985 году. В 1996 году Microsoft выпускает MS-DOS 3.2, которая по-прежнему ограничивает максимальный размер раздела жесткого диска 32 МБ. Мало кто задумывался о жестких дисках GiB, не говоря уже о памяти. SPARC был представлен в 1987 году. PowerPC 601 в 1992 году, сейчас мы приближаемся к жестким дискам GiB, если их еще нет. Рабочие станции Unix могут иметь двухзначный объем оперативной памяти MiB. Потребность в более чем 4 ГБ была еще далека. Добавление оборудования и сложности поддержки более чем 32-разрядных адресов не стоило того.

После того, как архитектура заложена и используется, вы не можете легко изменить основы, такие как размер адреса. Можно добавить, например, PAE на x86 или контроллеры внешней памяти на 6502.

Отредактировано, чтобы добавить И произошло и обратное. IBM 360, представленная в 1964 году, была 32-битной машиной с 24-битной адресацией. CRAY-2, представленный в 1985 году, представлял собой 64-битную машину с 32-битной адресацией. (Если я правильно читаю эту брошюру, см. "Архитектура и дизайн", стартовая страница 6.) Обратите внимание, что CRAY-2 представляется адресуемым в 64-битном слове, поэтому 32-битная адресация даст адресное пространство 8 * 4 Ги или 32 ГиБ.

Еще одна заметка

Я говорил о адресном пространстве. Название вопроса о RAM. Объем ОЗУ, при отсутствии внешнего контроллера памяти, который перераспределяет память, будет ограничен количеством проводов адресной линии, идущих от ЦП. Некоторые процессоры имели меньше адресных строк, чем битов в их адресном пространстве. Известный пример - Motorola 68000, который имел 32-разрядное адресное пространство с 24 адресными строками. Другим примером является Intel 80386SX, опять же 32-битная адресация и 24 адресные линии.

1

Процессор спроектирован так, чтобы использовать одну переменную для указателя инструкций и одну переменную для указателя стека. Весь код написан в предположении, что если вы начали играть с двумя переменными, вы бы разбили каждый бит кода там.

Что вы можете сделать, так это изменить, какой объем памяти 4 ГБ вы используете одновременно. Это PAE, о которой говорит TOOGAM. Любая программа по-прежнему будет ограничена 4 ГБ, если она не перепрыгнет через много циклов, чтобы получить доступ к дополнительной памяти (и ни один программист приложений не сделал бы этого в наши дни - если вы делаете что-то, что на самом деле требует более 4 ГБ, у вас есть Достаточно трудная задача: вы можете диктовать пользователю условия: 64 бита или я не запускаюсь), и вы вводите головную боль в межпроцессное взаимодействие. Совместное использование фрагмента чистых данных - это нормально, совместное использование фрагмента данных, содержащего указатель, вызовет проблемы, поскольку указатель будет указывать на неправильное место в адресном пространстве второй программы. Это является причиной головной боли водителя, которую упоминает TOOGAM.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .