2010-07-11 3 views
2

Вчера, когда я размышлял над Why can’t OS use entire 64-bits for addressing?, я нашел еще одну интересную вещь. Например, возьмем процессор Intel Core 2 Duo.Нужно немного уточнить адресные строки процессора

Из «4.2 Алфавитный указатель сигналов» от Intel Core 2 Duo Processor E8000 and E7000 Series - Datasheet Я узнал, что он имеет 36 адресных линий & 64 строки данных. В листе данных указаны адресные строки как A [35: 3] и строки данных как D [63: 0].

Что именно это подразумевает? Это мое понимание (с несколькими неотвеченными вопросами) сверху:

  1. Поскольку имеется 36 адресных линий. Общая адресуемая память составляет 2^36 = 64 ГБ, а каждая физическая память (байт) адресуется 36-разрядным номером.
  2. Так как A [2: 0] не упоминается. Это означает, что MMU (пейджинговый блок будет более конкретным) после перевода виртуального адреса на физический адрес (с помощью таблиц адресов) он помещает только 33 самых значимых бита в адресные строки A [35: 3]. ОЗУ отправляет все 8 возможных байтов (с 3 LSB, A [2: 0]) i.e .. для любого запроса в этом 8-байтовом диапазоне. ОЗУ отправляет те же 8-байтовые данные. правильно? Я думаю, это сделано для эффективности.
  3. Что будет дальше? Я имею в виду, что MMU нужны 1 байт данных, но оперативная память отправила 8 байтов. Как он справится с этим?
  4. Является ли эта ширина шины адреса 36-бит, так как intel enabled PAE?
  5. Я не могу найти шину адресной шины и шины данных в новых спецификациях процессора (Intel® Core™ i7 Processor Extreme Edition). :(Помогите!
+0

Подумайте об этом - шина данных имеет ширину 64 бит (8 байтов). На самом деле это не вопрос программирования, поэтому вы можете взять его на superuser.com. –

+0

@Paul R: Мышление не проблема. Проблема в том, насколько далеко мое мышление верное. Вот почему вместо того, чтобы сразу задать свой вопрос. Я написал то, что думаю – claws

ответ

2

байт дают возможность чипа (БЭ) штырьки указать, какие биты в 8-байтового кусок на самом деле являются актуальными.

Чтобы получить доступ к адресной 0x1 вы сложите все нули на A [ 35: 3] и установите BE [1] (у меня могут быть неправильные номера и полярность BE, но идея по-прежнему правильная).

Для доступа к байтам 0x3: 0x0 вы помещаете все нули в A [ 35: 3] и установите BE [3: 0].

Это должно отвечать на вопросы 1, 2 и 3.

Что касается вопроса 4, то на самом деле PAE позволит вам использовать 36 бит адреса. В более поздних процессорах такое же может быть достигнуто при подкачке 64-битного режима.

не может помочь с 5 ...

0

О 5: Ядро i7 архитектура использует 3 (On Chip) контроллер памяти (для каждого канала, один контроллер) с шириной 64 бит для каждого канала ,

Но, конечно, вы не можете использовать бит 3 * 64, потому что блоки SSE соединены с 128-битными линиями в кэш L1 (это, конечно, две 64-разрядные линии Чаша).

Эти три канала полезны только для быстрой предварительной выборки различных адресов одновременно.

Но на GPR вы можете использовать только 64-биты (потому что это 64-битная архитектура).

Адресное пространство должно быть 36 бит, потому что для чего вам нужны другие биты, если вы никогда не сможете подключить столько памяти.

+0

Без смысла какого-либо нарушения, похоже, у вас есть неполное понимание адресации памяти. Адрес в GPR - это только часть адреса. Для этого вам нужно добавить базу сегментов для получения линейного адреса, и это нужно преобразовать в физический адрес с помощью таблиц страниц. Таблицы страниц построены таким образом, что вы можете создавать адреса шириной до 64 бит, что более чем достаточно для покрытия 36 бит, которые требуется PAE. –

+0

Вы также ошибаетесь, когда говорите, что не можете получить доступ к 3 * 64 бит. Когда у вас несколько потоков или ядер, это позволяет им получать доступ к памяти параллельно, а не последовательно, что повышает производительность. –

+0

Я написал то же самое ... здесь «Три канала полезны только для быстрой предварительной выборки разных адресов одновременно». Я просто имею в виду, где, черт возьми, у вас есть SSE-операция или что-то, что использует 3 * 64 бит ? право, нигде нет только 128 бит операций (SSE stuff) – Quonux

Смежные вопросы