RAM SS vs DS: Which is the Best for Windows 10, 11
RAM SS Vs DS ram? Still confused about what these are and how these can affect your computer’s performance. No problem. We will explain everything about ram ss vs ds in detail.
What is a RAM
Random Access Memory (RAM) is a memory device that can store data in itself. It is found inside the Central Processing Unit (CPU) for desktop computers, while it is inside the system for laptops.
When stored in RAM, the data and information for various files, images, or documents can be accessed faster than those stored in the ROM (Read Only Memory) as this will only let you read but not edit. While in RAM’s case, you can edit the contents and also save them. It is volatile in nature.
Now, we will explain RAM ss vs ds individually.
Single Sided RAM
It is short for Single-sided RAM. In this type of RAM, there are only 64 bits that can be held at a time. One side of the RAM stick will have all eight chips, which are in black. Each of these chips can hold 8 bits.
There are a few RAM with eight chips on one side along with 8 bits on the other side. But still holds just 64 bits instead of 128 bits. This is because the whole 16 chips have a capacity of 4 bits instead of 8 bits.
RAM DS
This is short for Double-sided RAM. In this, both sides of the RAM stick have chips on them. There are eight chips on one side and again eight chips on the other. These lead to giving them a capacity of 128 bits for speed.
Now we will contrast the features for RAM ss vs ds.
Compare ram ss vs ds
Single-sided Ram | Double-sided Ram |
---|---|
These are usually of 64 bits. | These are 128 bits. |
They are also named: Rank 1 RAM. | Are also called: Rank 2 RAM. |
It can overclock higher than double-sided. | It sometimes overclocks lesser than ss RAM. |
Has eight chips on it. (Rarely 16). | Should have 16 chips. |
Works efficiently and steadily with Memory Controller. | Is more stressful for the memory controllers. |
The RAM modules have the word “1R” on them. | The RAM modules have the word “2R” on them. |
Do not need to switch banks. | Needs to switch banks. |
In-Depth Analysis RAM SS vs DS
If we take ss RAM first, the computer can gain access to all of it at a single time . This helps in viewing all of its memory at once.
But for ds RAM, the chips embedded in it are divided into two, known as banks . The computer is capable of seeing only one side of it at a time, not both.
When the system is reading the first half of the bank, it will not have any access to the other side of the bank. Similarly, the same happens when the system is reading the second half of the banks.
By keeping this in mind, single-sided RAMs are better than double-sided RAMs. The double-sided memory utilizes PINs 33 & 45 on the motherboard.
The double-sided RAM can provide low performance, so high-end systems may not have this even though the difference between these is nearly negligible. You will also be required to choose many other essential things to increase the performance of your system, like a good CL, memory size, etc.
You can check the type of side/rank your RAM stick has from the label stuck on top of it.
9 терминов, которые необходимо знать при покупке оперативной памяти компьютера
Представьте себе такой сценарий: Ваш компьютер работает не так быстро, как раньше. Он прекрасен во многих отношениях, но иногда он просто работает медленно.
Хотя ваш ПК может работать медленно по разным причинам, оперативная память является частым виновником. Если у вас недостаточно оперативной памяти, компьютер может не справляться с открытием нескольких программ или вкладок браузера.
Сложность заключается в том, чтобы понять, как говорить об оперативной памяти. Как задать вопрос или поговорить с кем-то о том, сколько оперативной памяти вам нужно, не понимая общепринятой терминологии в области оперативной памяти?
1. DIMM/SO-DIMM
Обычно вы сталкиваетесь с двумя распространенными типами оперативной памяти: DIMM и SO-DIMM.
- DIMM: двойной линейный модуль памяти
- SO-DIMM: малый модуль памяти DIMM.
Модули DIMM обычно используются в настольных компьютерах (или серверах), а модули SO-DIMM меньшего форм-фактора — в ноутбуках, нетбуках и т. д.
Разница в форм-факторе означает, что эти модули оперативной памяти не взаимозаменяемы. Нельзя вставить модуль DIMM в гнездо SO-DIMM и наоборот.
2. DDR
DDR расшифровывается как Double Data Rate, что означает удвоение количества передаваемых битов за один такт. С каждым поколением оперативной памяти DDR модернизируется, поэтому существуют модели DDR3, DDR4 и DDR5.
- DDR2: Самый старый тип оперативной памяти, который вы можете встретить, но даже в этом случае он является редкостью в наше время.
- DDR3: Выпущенная в 2007 году, до сих пор используется во многих системах, несмотря на то, что в 2014 году была официально вытеснена DDR4.
- DDR4: заняла лидирующую позицию у DDR3 только в 2017 году, поскольку медленное распространение сдерживало модернизированный стандарт. В 2021 году процессоры AMD и Intel перешли на использование исключительно оперативной памяти DDR4, положив конец DDR3.
- DDR5: новейший стандарт DDR все еще отстает от DDR4 по распространенности, хотя он обеспечивает более высокую скорость и передачу данных, чем более старая версия. Платформа AM5 от AMD поддерживает только DDR5, хотя Intel пока продолжает поддерживать и DDR4, и DDR5. Стоит отметить, что в 2022 году память типа DDR5 имеет низкие тайминги, и, несмотря на высокие частоты, прирост производительности остается минимальным.
Также обратите внимание, что нельзя использовать разные поколения оперативной памяти вместе.
3. GDDR
Подождите, разве мы только что не говорили о DDR? Да, но здесь другое — Graphics Double Data Rate, тип памяти, используемый в вашей видеокарте.
Короче говоря, ваш компьютер использует оперативную память для хранения данных, относящихся к используемым в данный момент программам, и других данных, к которым необходим быстрый доступ.
GDDR RAM используется в видеокарте для улучшения времени обработки графики и обычно оптимизирована для обеспечения более высокой пропускной способности, чтобы обеспечить оптимальную графическую производительность с другими частями GPU.
ОЗУ GDDR также имеет схожие названия с ОЗУ DDR:
- GDDR6X
- GDDR6
- GDDR5X
- GDDR5
- GDDR4
4. Двухканальная память
Двухканальная память — это когда оперативная память устанавливается в два канала памяти для увеличения скорости передачи данных между процессором и памятью компьютера. По сути, каналы оперативной памяти — это как полосы движения на автомагистралях. Двухканальная память равна двум полосам для движения.
В одноканальной системе более медленные компоненты и программы могут блокировать полосу для других компонентов и программ. В двухканальной системе, пока один канал занят задачей, другой канал открыт и может использоваться для трафика. Это означает, что при загрузке текстур не нужно ждать, пока кэш жесткого диска завершит цикл чтения/записи, чтобы загрузить текстуры. Следовательно, данные GPU, например, текстуры, можно менять местами в памяти, не дожидаясь завершения других задач.
Двухканальный режим намного эффективнее одноканального, так же как две полосы на дороге эффективнее однополосной. Часто эта разница выражается в колоссальные 10-30 FPS. Именно поэтому платы оперативной памяти обычно продаются парами — например, 8 ГБ х 2, что равно 16 ГБ.
5. Емкость и скорость передачи данных
Если вы отправитесь в интернет-магазин или в местный компьютерный магазин, чтобы проверить, какая оперативная память есть в наличии, вы увидите различные цифры. Эти цифры могут показаться немного ошеломляющими, но есть только несколько, на которые действительно стоит обратить внимание.
Во-первых, емкость. Какой объем данных необходим вашей оперативной памяти? Эта цифра — 4 ГБ, 8 ГБ, 16 ГБ и 32ГБ. Существуют и другие объемы ОЗУ, но для современного игрового ПК вам понадобится не менее 16 ГБ ОЗУ.
Больший объем, как правило, лучше, но не стоит переплачивать, если вы не собираетесь оптимально использовать всю дополнительную емкость. Например, если вы просто просматриваете веб-страницы, проверяете электронную почту и смотрите видео, 8 ГБ вам вполне хватит. Однако тем, кто использует свои компьютеры для более интенсивных процессов, потребуется больше.
Следующее число, которое необходимо учитывать, — это скорость передачи данных, измеряемая в мегатрансферах в секунду (MT/s). Например, вы можете увидеть оперативную память DDR4-3200, что означает, что она работает со скоростью 3 200 MT/s. Вы можете найти более быструю оперативную память, чем эта, но она будет стоить дороже.
Еще стоит знать, что вы получите гораздо больше пользы от 8 ГБ оперативной памяти DDR4-2400, чем от 4 ГБ оперативной памяти DDR4-3200. Причина в том, что объема в размере 4 ГБ вам будет не хватать в современных играх и уж тем более в будущих. Другое дело — старые игрушки, где хватит и 4 ГБ — тогда ситуация будет обратной. Или, например, быстрая двухканальная RAM 8 ГБ DDR4-3600 для геймера подойдет куда лучше, чем медленная одноканальная 16 ГБ память — хотя бы потому, что большинству игр просто не нужно столько памяти, а значит, выигрывает скорость и многоканальность.
6. Задержка оперативной памяти (CAS) и тайминги
Емкость и скорость передачи данных — это не единственные разряды числового жаргона оперативной памяти. Вы также можете увидеть ряд цифр, например CL 16-18-18-36.
CL» означает задержку CAS оперативной памяти, а CAS расшифровывается как Column Address Strobe. Вам не нужно слишком беспокоиться об этих терминах, но стоит знать, что меньшее значение CAS часто лучше, так как это означает, что ваша оперативная память может получить доступ к данным быстрее.
Вы можете увидеть оперативную память с одинаковой скоростью передачи данных, например DDR-3200, которая поставляется с разными таймингами CAS. Например, один набор может иметь рейтинг CL18, а другой — CL16. В этом случае оперативная память CL16 будет выполнять задачи немного быстрее, чем CL18, но вы заплатите за нее больше.
7. Оперативная память PC3, PC4 И PC5
PC3, PC4 и PC5 равнозначны DDR3, DDR4 и DDR5. Однако они несколько иначе измеряют производительность оперативной памяти.
Если DDR4-xxxx подробно описывает скорость передачи данных на бит, то PC4-xxxx подробно описывает общую скорость передачи данных оперативной памяти в МБ/с. Общую скорость передачи данных модуля оперативной памяти можно узнать, умножив его частоту на восемь.
Так, если на модуле оперативной памяти указано DDR4-3200, вы можете умножить эту цифру на восемь, чтобы узнать общую скорость передачи данных, в данном случае 25600 МБ/с (что переводится как PC4-25600).
8. Слоты оперативной памяти
Прежде чем покупать оперативную память, необходимо проверить материнскую плату: сколько у вас слотов для оперативной памяти? Количество слотов на вашей материнской плате определит, сколько модулей оперативной памяти вы купите.
Если у вас два слота оперативной памяти, вы можете купить пару подходящих модулей. Многие комплекты оперативной памяти поставляются с двумя модулями или иногда с четырьмя (если у вас четыре слота). Совмещение модулей оперативной памяти не обязательно, но, как правило, оперативная память будет работать лучше, если использовать модули одинаковой емкости, с одинаковым напряжением и так далее.
Более того, если вы используете модули оперативной памяти с разными частотами или скоростями, остальная оперативная память по умолчанию будет работать на более низкой частоте, пытаясь согласовать и стабилизировать систему.
9. Память ECC
Память ECC (Error-correcting code) — это особый вид компьютерного хранилища данных, который может как определять, так и исправлять наиболее распространенные формы повреждения данных.
Микросхемы памяти ECC используются в основном в компьютерах, которые не терпят ошибок в любом случае, например, в финансовых или научных вычислениях или файловых серверах. Обычно на систему памяти не влияют однобитные ошибки, и система испытывает гораздо меньше сбоев, чем система, несовместимая с памятью ECC.
Однако стали бы вы играть с памятью ECC? Ответ, скорее всего, нет. Исследование компании Puget Systems показало, что ECC RAM работает медленнее, чем стандартная оперативная память.
Так зачем же включать ECC RAM в этот список? Чтобы вы случайно не купили ее!
Покупайте оперативную память без страха
Покупка оперативной памяти не обязательно должна быть сложной задачей. Вооружившись несколькими знаниями из жизненно важного жаргона, вы сможете принимать более правильные решения о покупке оперативной памяти, модернизации системы и многом другом.
Хотя некоторые термины оперативной памяти могут показаться сложными, как только вы войдете в курс дела, все встанет на свои места.
Ss ds память отличия: Представление не найдено [name, type, prefix]: article, htmlstart2, contentView
Лекция 3. Память. – Системное программирование
С точки зрения программиста память состоит из отдельных ячеек размером в байт (8 бит). Точнее память состоит из битов, но программист может оперировать только отдельными байтами. Если программе нужно изменить значение только одного бита, то она все равно должна считать целый байт, содержащий этот бит.
Т.к. ячеек памяти, в отличие от процессорных регистров, огромное количество, то они не имеют названий как регистры процессора, а имеют просто уникальные числовые адреса, называемые физическими. Таким образом, память это просто огромный массив пронумерованных ячеек (нумерация начинается с нуля).
Вся память делится на оперативную (ОЗУ) (по-английски RAM (Random Access Memory) — устройство с произвольным доступом) и постоянную память (ПЗУ) (ROM (Read Only Memory) — память только для чтения). Если в ОЗУ можно как записывать, так и считывать информацию, то из ПЗУ ее можно только считывать. В ПЗУ расположена BIOS и программа начальной загрузки компьютера (POST). Постоянная и оперативная память находятся в едином пространстве адресов.
Важно помнить, что перед выполнением любая программа должна быть загружена в ОЗУ, только после этого процессор начинает последовательно считывать из нее и выполнять команды. Жесткие диски, дискеты, CD/DVD и прочие носители информации хранят файлы, которые будут выполнены только после того как будут загружены в память, причем образ на носителе информации не всегда соответствует тому образу, который будет перенесен в память. Переносом программы с носителя в память (и обратно, если необходимо) занимается операционная система.
Загруженная в память программа всегда отводит под свои нужды отдельный участок памяти, который называется стеком. Стек работает особым образом — данные в него помещаются и извлекаются по принципу LIFO (Last In First Out — “последним вошел– первым вышел”). Стек можно представить в виде стопки листов бумаги (это, кстати, одно из значений английского слова stack) — листы, которые мы положили в стопку последними, сможем забрать первыми, иначе говоря, можем класть и забирать листы только с вершины стопки.
В реальном режиме процессор делит пространство памяти на сегменты по 64 Кбайт (сегментированная модель памяти), в защищенном режиме процессор предоставляет несколько различных моделей памяти, но чаще всего используется самая простая плоская модель памяти (память представляется одним сплошным массивом байтов). Как выглядит образ памяти программы в реальном режиме показано на рис. 3.1 и на рис. 3.2, а плоская модель памяти показана на рис. 3.3.
Рис. 3.1. Образ памяти программы типа COM.
Рис. 3.2. Образ памяти программы типа EXE.
Рис. 3.3. Плоская модель памяти.
Фирме Intel понадобилось в реальном режиме делить память на 64 Кбайт сегменты, т.к. процессоры первого поколения были 16-разрядными, а, следовательно, максимальный размер, который они могли адресовать, составлял всего 2 16 =64 Кбайт. Понятно, что это очень мало, поэтому Intel стала искать способы расширения доступного адресного пространства. Конечно, самый простой способ — это увеличить разрядность процессора (что и было сделано в последующих поколениях), но в первых поколениях процессоров это не позволяла сделать технология, ограничивающая количество элементов на чипе. Поэтому фирма Intel решила использовать специальный встроенный диспетчер памяти, для управления которым были введены известные нам уже сегментные регистры: CS указывал на область ОЗУ в котором располагался код программы, регистр DS отвечал за данные, SS определял расположение стека. А адрес ячейки внутри сегмента стал представлять собой совокупность двух слов, записываемых в программах в виде SSSSh:OOOOh, где SSSSh — адрес сегмента, а OOOOh — относительный адрес (называемый также эффективным), или смещение, который используется для доступа к ячейке внутри сегмента.
Однако в процессорах первого поколения использовалась 20-разрядная шина адреса, по которой передать значение адреса состоящего из двух слов (32 бита) было невозможно. Поэтому для преобразования 32-х разрядного адреса в 20-разрядный адрес для передачи по шине адреса Intel ввела следующий аппаратный алгоритм: значение сегментного регистра умножается на 16 (10h) или (что то же самое) сдвигается на 4 разряда влево и складывается со значением смещения, в результате получается 20-битный адрес. Например, если 32-разрядный адрес DS:BX, где DS=1234h, BX=5678h, то значение сегментного регистра, умноженное на 16 будет равно 12340h, а физический адрес 12340h+5678h=179B8h.
Таким образом, под физическим адресом понимается адрес памяти, выдаваемый на шину адреса микропроцессора. Другие названия этого адреса — абсолютный адрес, линейный адрес (однако в защищенном режиме физический и линейный адреса — это не одно и то же). Так как физический адрес имеет размерность 20 бит, то максимальное пространство памяти, которое может использовать программа в реальном режиме равно 2
Конечно, в наше время размер 1 Мбайт памяти, который предоставлен программе в реальном режиме, выглядит смешно. Но когда-то это казалось очень много. Ограничение памяти в 1 Мбайт в реальном режиме, также как и в режиме V86 сохранилось до сих пор — об этом следует помнить.
В последующих поколениях процессорах разрядность шины адреса увеличивалась, например в Pentium 4 она составляет 64 бита, но все равно в реальном режиме не зависимо от поколения процессора задействуются только 20 линий, а остальные линии шины адреса в этом режиме просто недоступны. Начиная с процессора 80386, в качестве смещения стало возможно использовать 32-х разрядный адрес.
Таким образом, имея 16-разрядные регистры, удалось увеличить адресное пространство до 1 Мбайт, а данную технологию назвали сегментацией памяти. Конечно, тогда это решение казалось удачным, но с появлением защищенного режима в 32-разрядных процессорах фирма Intel перешла к плоской модели памяти, а сегментную модель памяти пришлось сохранить для обеспечения совместимости с программным обеспечением, созданным под реальный режим работы процессора.
В защищенном режиме появилось еще 4 модели памяти (эти модели памяти недоступны в реальном режиме):
· плоская, или линейная модель памяти (flat memory model) — вся память представляет собой непрерывную линейную последовательность байт (рис. 3.3). Диапазон адресов в этой модели находится в пределах от 0 до 2 32 -1 (4 Гбайт). Программный код, данные и стек располагаются в этом пространстве адресов.
· сегментированная модель памяти (segmented memory model)
— подобно тому, как это делается в реальном режиме, в защищенном режиме память может делиться на отдельные пространства адресов, которые называют сегментами. При этом программный код, данные и стек размещаются в отдельных сегментах памяти. Программы в 32-разрядном режиме могут использовать до 16383 сегментов разного размера, каждый из которых может иметь размер 2 32 байт (4 Гбайт). Однако в отличие от реального режима, преобразование логических адресов в физические в сегментированной модели памяти защищенного режима выполняется значительно сложнее. По-прежнему логический адрес формируется при помощи сегментных регистров и регистров, в которых хранятся смещения. Однако сегментные регистры теперь хранят не сегментный адрес, а так называемый селектор (рис. 3.4).
Рис. 3.4. Формат селектора.
Он также содержит16 бит, но теперь имеет более сложную структуру:
· Index — индекс в таблице дескрипторов(его длина13 бит, следовательно в таблице содержится не более 2 13 =8192 дескрипторов).
· TI — если бит установлен, то это селектор в LDT, сброшен в GDT.
· RPL — уровень привилегий запроса.
Индекс селектора (13 бит) указывает на дескриптор в таблице, называемой дескрипторной.
В сегментированной модели памяти защищенного режима используется две дескрипторные таблицы: глобальная (GDT) и локальная(LDT). Тип используемой таблицы определяется битом TI селектора. Таблицы— это просто массивы из дескрипторов. Адреса этих массивов хранятся в системных регистрах: GDTR и LDTR, соответственно.
Селекторы текущих сегментов кода, данных и стека хранятся в регистрах CS, DS и SS соответственно. Таким образом, логический адрес формируется из селектора сегмента и смещения внутри сегмента. Исходя из всего вышеперечисленного схема адресации сегментированной модели памяти защищенного режима будет выглядеть так как показано на рис. 3.5.
Рис. 3.5. Схема преобразования логического адреса в линейный в защищенном режиме адресации.
· страничная модель памяти (paging) — является надстройкой над сегментированной или плоской моделью памяти. В этом режиме память рассматривается как совокупность блоков фиксированного размера (страниц) размером 4 Кбайт. Начиная с 5-го поколения процессоров, появилась возможность увеличения размера страницы до 4 Мбайт. Страничная модель памяти предназначена для организации виртуальной памяти. Благодаря виртуальной памяти программы могут использовать для работы объем памяти больший, чем объем физической памяти. Суть виртуальной памяти заключается в том, что страницы могут выгружаться из физической оперативной памяти на диск (в файл обмена, файл подкачки или swap-файл) и по мере необходимости подкачиваться с него обратно. Через страничное преобразование i386 может адресовать до 4 Гбайт физической памяти и до 64 Тбайт виртуальной памяти. Виртуальная память включается в настройках операционной системы. Разбиение на страницы выполняется на аппаратном уровне и программисту знать подробностей, как правило, не требуется. На программном уровне страничный механизм включается установкой специального бита (PG) в регистре CR0 при помощи привилегированной команды.
· модель памяти в режиме V86. С точки зрения программиста эта модель памяти работает точно также как в обычном реальном режиме. Т.е. память делится на сегменты по 64 Кбайт, ячейки внутри которых адресуются с помощью двух слов, записываемых в виде СЕГМЕНТ:СМЕЩЕНИЕ, максимальная адресуемая память 1 Мбайт и пр. Однако в режиме V86 выполняются все проверки защиты защищенного режима, из-за чего в некоторых случаях не будут работать некоторые инструкции. Особенно это касается инструкций ввода-вывода IN, OUT, (REP) INS, (REP) OUTS и инструкций обработки прерываний: INT n, PUSFF, POPF, STI, CLI и IRET.
Организация памяти / Хабр
За последнюю неделю дважды объяснял людям как организована работа с памятью в х86, с целью чтобы не объяснять в третий раз написал эту статью.
И так, чтобы понять организацию памяти от вас потребуется знания некоторых базовых понятий, таких как регистры, стек и тд. 32-1.
Программист работает с этой памятью, если ему нужно определить переменную, он просто говорит ячейка памяти с адресом таким-то будет содержать такой-то тип данных, при этом сам програмист может и не знать какой номер у этой ячейки он просто напишет что-то вроде:
int data = 10;
компьютер поймет это так: нужно взять какую-то ячейку с номером стопицот и поместить в нее цело число 10. При том про адрес ячейки 18894 вы и не узнаете, он от вас будет скрыт.
Все бы хорошо, но возникает вопрос, а как компьютер ищет эту ячейку памяти, ведь память у нас может быть разная:
3 уровень кэша
2 уровень кэша
1 уровень кэша
основная память
жесткий диск
Это все разные памяти, но компьютер легко находит в какой из них лежит наша переменная int data.
Этот вопрос решается операционной системой совместно с процессором.
Вся дальнейшая статья будет посвящена разбору этого метода.
Архитектура х86 поддерживает стек.
Стек это непрерывная область оперативной памяти организованная по принципу стопки тарелок, вы не можете брать тарелки из середины стопки, можете только брать верхнюю и класть тарелку вы тоже можете только на верх стопки.
В процессоре для работы со стеком организованны специальные машинные коды, ассемблерные мнемоники которых выглядят так:
push operand
помещает операнд в стек
pop operand
изымает из вершины стека значение и помещает его в свой операнд
Стек в памяти растет сверху вниз, это значит что при добавлении значения в него адрес вершины стека уменьшается, а когда вы извлекаете из него, то адрес вершины стека увеличивается.
Теперь кратко рассмотрим что такое регистры.
Это ячейки памяти в самом процессоре. Это самый быстрый и самый дорогой тип памяти, когда процессор совершает какие-то операции со значением или с памятью, он берет эти значения непосредственно из регистров.
В процессоре есть несколько наборов логик, каждая из которых имеет свои машинные коды и свои наборы регистров.
Basic program registers (Основные программные регистры) Эти регистры используются всеми программами с их помощью выполняется обработка целочисленных данных.
Floating Point Unit registers (FPU) Эти регистры работают с данными представленными в формате с плавающей точкой.
Еще есть MMX и XMM registers эти регистры используются тогда, когда вам надо выполнить одну инструкцию над большим количеством операндов.
Рассмотрим подробнее основные программные регистры. К ним относятся восемь 32 битных регистров общего назначения: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP
Для того чтобы поместить в регистр данные, или для того чтобы изъять из регистра в ячейку памяти данные используется команда mov:
mov eax, 10
загружает число 10 в регистр eax.
mov data, ebx
копирует число, содержащееся в регистре ebx в ячейку памяти data.
Регистр ESP содержит адрес вершины стека.
Кроме регистров общего назначения, к основным программным регистрам относят шесть 16битных сегментных регистров: CS, DS, SS, ES, FS, GS, EFLAGS, EIP
EFLAGS показывает биты, так называемые флаги, которые отражают состояние процессора или характеризуют ход выполнения предыдущих команд.
В регистре EIP содержится адрес следующей команды, которая будет выполнятся процессором.
Я не буду расписывать регистры FPU, так как они нам не понадобятся. Итак наше небольшое отступление про регистры и стек закончилось переходим обратно к организации памяти.
Как вы помните целью статьи является рассказ про преобразование логической памяти в физическую, на самом деле есть еще промежуточный этап и полная цепочка выглядит так:
Логический адрес –> Линейный (виртуальный)–> Физический
Все линейное адресное пространство разбито на сегменты. Адресное пространство каждого процесса имеет по крайней мере три сегмента:
Сегмент кода. (содержит команды из нашей программы, которые будут исполнятся.)
Сегмент данных. (Содержит данные, то бишь переменные)
Сегмент стека, про который я писал выше.
Линейный адрес вычисляется по формуле:
линейный адрес=Базовый адрес сегмента(на картинке это начало сегмента) + смещение
Сегмент кода
Базовый адрес сегмента кода берется из регистра CS. Значение смещения для сегмента кода берется из регистра EIP, в котором хранится адрес инструкции, после исполнения которой, значение EIP увеличивается на размер этой команды. Если команда занимает 4 байта, то значение EIP увеличивается на 4 байта и будет указывать уже на следующую инструкцию. Все это делается автоматически без участия программиста.
Сегментов кода может быть несколько в нашей памяти. В нашем случае он один.
Сегмент данных
Данные загружаются в регистры DS, ES, FS, GS
Это значит что сегментов данных может быть до 4х. На нашей картинке он один.
Смещение внутри сегмента данных задается как операнд команды. По дефолту используется сегмент на который указывает регистр DS. Для того чтобы войти в другой сегмент надо это непосредственно указать в команде префикса замены сегмента.
Сегмент стека
Используемый сегмент стека задается значением регистра SS. 13 = 8192 это максимальное количество дескрипторов в таблице.
Вообще дескрипторных таблиц бывает два вида GDT и LDT Первая называется глобальная таблица дескрипторов, она в системе всегда только одна, ее начальный адрес, точнее адрес ее нулевого дескриптора хранится в 48 битном системном регистре GDTR. И с момента старта системы не меняется и в свопе не принимает участия.
А вот значения дескрипторов могут меняться. Если в селекторе бит TI равен нулю, тогда процессор просто идет в GDT ищет по индексу нужный дескриптор с помощью которого осуществляет доступ к этому сегменту.
Пока все просто было, но если TI равен 1 тогда это означает что использоваться будет LDT. Таблиц этих много, но использоваться в данный момент будет та селектор которой загружен в системный регистр LDTR, который в отличии от GDTR может меняться.
Индекс селектора указывает на дескриптор, который указывает уже не на базовый адрес сегмента, а на память в котором хранится локальная таблица дескрипторов, точнее ее нулевой элемент. Ну а дальше все так же как и с GDT. Таким образом во время работы локальные таблицы могут создаваться и уничтожаться по мере необходимости. LDT не могут содержать дескрипторы на другие LDT.
Итак мы знаем как процессор добирается до дескриптора, а что содержится в этом дескрипторе посмотрим на картинке:
Дескрипторы состоит из 8 байт.
Биты с 15-39 и 56-63 содержат линейный базовый адрес описываемым данным дескриптором сегмента. Напомню нашу формулу для нахождения линейного адреса:
линейный адрес = базовый адрес + смещение
С помощью такой нехитрой операции процессор может обращаться по нужному адресу линейной памяти.
Рассмотрим другие биты дескриптора, очень важным является Segment Limit или предел, он имеет 20битное значение от 0-15 и 48-51 бит. Предел задает размер сегмента. Для сегментов данных и кода доступными являются все адреса, расположенные в интервале:
[база; база+предел)
В зависимости от 55 G-бита(гранулярити), предел может измеряться в байтах при нулевом значении бита и тогда максимальный предел составит 1 мб, или в значении 1, предел измеряется страницами, каждая из которых равна 4кб. и максимальный размер такого сегмента будет 4Гб.
Для сегмента стека предел будет в интервале:
(база+предел; вершина]
Кстати интересно почему база и предел так рвано располагаются в дескрипторе. Дело в том что процессоры х86 развивались эволюционно и во времена 286х дескрипторы были по 8 бит всего, при этом старшие 2 байта были зарезервированы, ну а в последующих моделях процессоров с увеличением разрядности дескрипторы тоже выросли, но для сохранения обратной совместимости пришлось оставить структуру как есть.
Значение адреса «вершина» зависит от 54го D бита, если он равен 0, тогда вершина равна 0xFFF(64кб-1), если D бит равен 1, тогда вершина равна 0xFFFFFFFF (4Гб-1)
С 41-43 бит кодируется тип сегмента.
000 — сегмент данных, только считывание
001 — сегмент данных, считывание и запись
010 — сегмент стека, только считывание
011 — сегмент стека, считывание и запись
100 — сегмент кода, только выполнение
101- сегмент кода, считывание и выполнение
110 — подчиненный сегмент кода, только выполнение
111 — подчиненный сегмент кода, только выполнение и считывание
44 S бит если равен 1 тогда дескриптор описывает реальный сегмент оперативной памяти, иначе значение S бита равно 0.
Самым важным битом является 47-й P бит присутствия. Если бит равен 1 значит, что сегмент или локальная таблица дескрипторов загружена в оперативку, если этот бит равен 0, тогда это означает что данного сегмента в оперативке нет, он находится на жестком диске, случается прерывание, особый случай работы процессора запускается обработчик особого случая, который загружает нужный сегмент с жесткого диска в память, если P бит равен 0, тогда все поля дескриптора теряют смысл, и становятся свободными для сохранения в них служебной информации. После завершения работы обработчика, P бит устанавливается в значение 1, и производится повторное обращение к дескриптору, сегмент которого находится уже в памяти.
На этом заканчивается преобразование логического адреса в линейный, и я думаю на этом стоит прерваться. В следующий раз я расскажу вторую часть преобразования из линейного в физический.
А так же думаю стоит немного поговорить о передачи аргументов функции, и о размещении переменных в памяти, чтобы была какая-то связь с реальностью, потому размещение переменных в памяти это уже непосредственно, то с чем вам приходится сталкиваться в работе, а не просто какие-то теоретические измышления для системного программиста. Но без понимания, как устроена память невозможно понять как эти самые переменные хранятся в памяти.
В общем надеюсь было интересно и до новых встреч.
Односторонняя и двусторонняя память (модули ОЗУ SS и DS)
В чем разница между односторонней и двусторонней памятью? И один лучше другого?
Односторонние модули RAM имеют микросхемы памяти только с одной стороны печатной платы, двусторонние — с обеих сторон.
Вот и все. В этом разница. Не путайте их с другими характеристиками ОЗУ, такими как ранги, каналы или количество модулей:
Односторонние и двусторонние карты оперативной памяти различаются физическим расположением микросхем DRAM на печатной плате модуля оперативной памяти.
Как следует из названия, односторонние модули имеют микросхемы DRAM на одной стороне печатной платы модуля RAM. Их двухсторонние собратья имеют микросхемы DRAM с обеих сторон печатной платы.
Односторонний двусторонний и двухсторонняя ОЗУ отличаются от одинарной ранга и двойной ранга ОЗУ.
С точки зрения производительности нет никакой разницы между односторонней и двусторонней памятью.
Но разница в производительности существует, когда сравнивает одноранговую и двухранговую память . Все сводится к их количеству и процессу, называемому Rank Interleaving.
RAM-накопители могут иметь чипы DRAM с обеих сторон печатной платы, но это не обязательно означает, что они двухранговые.
Они по-прежнему могут быть одноранговыми, если каждый из их чипов DRAM направляет 4 бита в канал RAM .
Группа отраслевых стандартов памяти (JEDEC) определила термин «ранг памяти», который представляет собой одновременно доступные микросхемы DRAM, подключенные к одному ведомому устройству.
Каждый ранг имеет 64-битную шину данных.
Что касается модулей ECC DIMM, мы рассматриваем 72-битную шину данных, поскольку они имеют дополнительную физическую микросхему, хранящую еще восемь бит для проверка ошибки .
- 1RX8: Представляет собой одноранговый модуль.
- 2RX8: Представляет двухранговый модуль.
- 4RX8: Четырехранговый модуль.
Имейте в виду, что ядро ЦП может одновременно обращаться только к одному рангу памяти, но это не означает, что второй ранг является избыточным как из-за процесса, называемого Rank Interleaving , так и из-за того, что современные ЦП иметь несколько ядер.
Односторонние модули 1Rx8 популярны среди оверклокеров , потому что меньшее количество чипов, расположенных дальше друг от друга, будет немного холоднее и теоретически более стабильными.
Нет разницы в производительности между односторонней и двусторонней ОЗУ.
может быть незначительной разницей с модулями ОЗУ, которые имеют больше микросхем памяти с обеих сторон и, следовательно, выделяют больше тепла и раньше становятся нестабильными при разгоне, особенно при установке рядом с другими модулями ОЗУ.
Одноранговая и двусторонняя ОЗУ — это не то же самое, что одноранговая и двухранговая ОЗУ.
Одностороннее ОЗУ относится к физическому расположению микросхем DRAM на печатной плате модуля.
Ранги ОЗУ относятся к общему количеству 64-битных (72-битных в ECC) шин данных, которые позволяют вам получить доступ к модулям памяти.
- Емкость (в ГБ, чем больше, тем лучше)
- каналов (одиночный, двойной, четырехъядерный, шестигранный, восьмикратный, чем выше, тем лучше)
- Частота (Чем выше, тем лучше)
- Задержка (например, задержка CAS, чем меньше, тем лучше)
- Ранги (Одиночные, Двойные, Четырехранговые, в зависимости от вашего варианта использования, обычно чем выше, тем лучше)
- Торговая марка (например, Corsair, G. Skill)
- сторон (двусторонняя / односторонняя, зависит от вашего варианта использования, одинарная обычно лучше для более низких температур)
Дело не в расположении микросхем DRAM, а в количестве рангов памяти, которыми они обладают.
Как правило, оперативная память DR на 5–10 % быстрее своих аналогов SR в некоторых рабочих нагрузках, но разница может быть еще более заметной с процессорами Ryzen.
Это можно сделать двумя способами:
- Выключите компьютер, снимите боковую панель и проверьте свою оперативную память, чтобы узнать, установлены ли в ней микросхемы DRAM только с одной или с обеих сторон печатной платы.
- Если у вашей оперативной памяти есть радиатор, загрузите и установите CPU-Z. Перейдите на вкладку «Скорость (SPD)», и вы увидите номер детали вашей оперативной памяти.
Снимок экрана с номером детали RAM из приложения CPU-Z
Вы можете запустить поиск по номеру детали, и вы должны перейти на страницу информации о продукте производителя, на которой будут перечислены спецификации модуля. Если производитель не указывает размещение чипов в спецификациях, вам не повезло. Возможно, вы сможете сопоставить чипы Micron/Samsung, взглянув на наклейку на ваших модулях оперативной памяти, но кроме этого (или сняв теплоотвод) это почти невозможно из-за очень скудных спецификаций продукта в Интернете.
Вам к вам
Есть вопросы? Дайте мне знать в комментариях или на нашем форуме!
CGDirector поддерживает Reader. Когда вы покупаете по нашим ссылкам, мы можем получать партнерскую комиссию.
Что лучше для Windows 11?
RAM означает «оперативное запоминающее устройство». Хотя это может показаться сложным, это один из самых основных компонентов компьютеров. Оперативная память кажется сверхбыстрой, но временной емкостью памяти компьютера, которая требуется компьютеру сейчас или в ближайшее время. Оперативная память — это хранилище, которое исчезает всякий раз, когда ток отключается. Это очень быстро, что делает его идеальным для элементов, с которыми ваша система активно работает, включая запуск различных приложений и информацию, с которой они работают.
Теперь существует три различных ранга для оперативной памяти. Наиболее популярными являются SS (односторонние) и DS (двусторонние). Эти два варианта оперативной памяти похожи, но различаются по производительности, что может сыграть жизненно важную роль при выборе вашей системы. Сегодня мы поговорим о RAM SS и DS.
СС в ОЗУ означает одностороннюю оперативную память. Только 64 бита могут быть сохранены в этом типе ОЗУ в определенный период времени. Все восемь черных чипов находятся исключительно на одном конце карты оперативной памяти. Каждая из микросхем имеет восьмибитную разрядность. Всего несколько микросхем оперативной памяти имеют по восемь микросхем с обеих сторон. Однако он сохраняет только 64 бита вместо 128. Это происходит потому, что каждый из 16 чипов имеет емкость четырех бит, а не восьми бит.
Двусторонний сокращенно DRAM. В этом случае обе стороны ОЗУ имеют чипы. С одной стороны 8 фишек, а с другой стороны еще один набор из 8 фишек. В результате они имеют в общей сложности 128-битную емкость для скорости.
Из определения ОЗУ SS и DS уже можно догадаться, что должна быть разница в производительности. Иначе не было бы разных оперативок. Если вы обратите пристальное внимание на факты и технические детали, станет совершенно ясно, что они разные. Основное и главное отличие заключается в количестве рангов. В то время как SS имеет один ранг, а DS имеет двойной ранг, что понятно из названий этих двух типов RAM. Задумывались ли вы о том, каково было бы получить четкое представление о RAM SS и DS?
При хранении или анализе информации каждая шина данных содержит набор адресованных процессоров DRAM. Такие чипы, также известные как ранги, могут быть вставлены только на одну или на обе стороны накопителя. Одноранговая компоновка представляет собой единицу хранения размером шестьдесят четыре бита, которая составляет семьдесят два бита для памяти ECC и имеет восемь дополнительных битов, позволяющих исправлять ошибки. Другими словами, это единая ветвь памяти или набор микросхем хранения. Поскольку двухранговые модули имеют два блока данных, они будут иметь ширину сто двадцать восемь бит. Соответственно, существуют также восьмиранговые и четырехранговые модули, которые имеют от четырех до восьми шестидесятичетырехбитных блоков данных. Они обычно используются для увеличенных блоков памяти с огромным объемом памяти на модуль.
Номер ранга может указывать внутреннюю память устройства RAM. Тем не менее, это в основном зависит от технологии процессоров карты памяти и версии DDR. Поскольку большинство микросхем IC могут вмещать только один ГБ памяти, многие современные диски DDR4 емкостью 16 ГБ являются двусторонними. Например, чипы Crucial RevB большей емкости, с другой стороны, позволяют использовать до шестнадцати ГБ памяти в односторонней ОЗУ. Двухранговые и четырехранговые микросхемы памяти емкостью 32 ГБ жизнеспособны, поскольку можно использовать один модуль памяти одинарного ранга 8 ГБ или даже 16 ГБ. В настоящее время нет доступного модуля хранения DDR4 емкостью 32 ГБ с одним рейтингом. Однако по мере развития технологий мы можем увидеть их больше.
Существует множество категорий, в которых SS и DS отличаются друг от друга. Эти категории подскажут вам, какая оперативная память лучше другой. Давайте посмотрим на RAM SS и DS.
Оперативная память SS также известна как одноранговая ОЗУ из-за того, что она имеет только один ранг. Двухранговая оперативная память является наиболее распространенным типом двусторонней оперативной памяти. В оперативной памяти SS также доступны четырехранговые и восьмеричные хранилища. Многоранговые компоненты используются для увеличения плотности модуля. Еще одним преимуществом многочисленных рангов является наличие более доступной памяти, что в некоторых случаях повышает эффективность.
Однако наличие большего количества рангов увеличивает нагрузку на программную память, поэтому каждая система управления ограничивает общее количество уровней, которыми она может управлять, и скорость, с которой она может ими управлять.
Контроллер памяти обеспечивает более высокую эффективность с двусторонней, чем с односторонней ОЗУ для такого ограниченного объема памяти. Тем не менее, пользователи сообщают, что модули DS не могут работать с такой высокой тактовой частотой. Просто контроллер памяти тоже не выдерживает, когда дело доходит до вашей памяти, нет ничего лучше и хуже, если вы не сравниваете ее ни с чем. Двусторонние модули могут время от времени давать незначительное повышение скорости, но односторонние модули должны работать с более широким диапазоном процессоров памяти.
Поскольку мы все согласны с тем, что нагрузка на эту системную память меньше, модули DIMM SS, вероятно, могут работать быстрее, чем модули DIMM DS.
Чипы памяти большего размера используются в однослойных модулях DIMM, а сама память используется в качестве двухсторонних модулей DIMM. Такие более крупные чипы могут быть результатом более современной технологии производства. Они могут быть быстрее и иметь пониженное напряжение, что позволит устройствам синхронизироваться быстрее.
Одностороннее ОЗУ обычно имеет разрядность 64 разряда, а двустороннее ОЗУ — 128 разрядов
известная как ОЗУ 2-го ранга.
Односторонняя оперативная память может разгоняться выше, чем двухсторонняя, в то время как двухсторонняя оперативная память иногда разгоняется меньше, чем оперативная память SS.
Одностороннее ОЗУ имеет восемь чипов и редко шестнадцать чипов. Двусторонняя оперативная память имеет шестнадцать микросхем.
Односторонняя оперативная память может эффективно и стабильно работать с контроллером памяти, в то время как двухсторонняя ОЗУ может вызвать стресс при работе с контроллерами памяти.
Односторонние ОЗУ имеют маркировку «1R», а двусторонние ОЗУ имеют маркировку «2R».
В односторонних RAM не нужно переключать банки, но в двухсторонних RAM необходимо переключать банки.
Как правило, односторонняя память быстрее двусторонней. Иными словами, всякий раз, когда система входит в одностороннее хранилище, кажется, что она выходит за пределы рельса только один раз, тогда как для двустороннего хранилища требуется два обхода рельса. Тем не менее, некоторые компьютеры лучше всего работают с многоранговой памятью из-за встроенных процессоров памяти. Это особенно верно в случае серверной памяти, в которой используются модули LRDIMM.
Поскольку контроллеру системы хранения требуется только один раз просмотреть всю память для извлечения, SS обеспечивает более быстрый доступ к данным практически для любого приложения. Хотя двойное ранжирование может предоставить вам больше места для хранения, большинство игр в наши дни даже не используют столько места. В результате выбор настройки SS обеспечит вам оптимальный игровой процесс.
В большинстве случаев двухстороннюю память можно использовать вместе с односторонней ОЗУ. В некоторых случаях при использовании большого объема памяти, например 16 ГБ, материнские платы требуют использования комбинации односторонней и двухсторонней оперативной памяти.
При сравнении односторонней и двухсторонней оперативной памяти с одинаковыми скоростями последняя имеет небольшое преимущество — от трех до пяти процентов.
Маскирование и распараллеливание циклов обновления обычно повышают производительность программ, интенсивно использующих ЦП, за счет уменьшения времени отклика памяти, но это не относится к односторонним.
Задержка, создаваемая программной памятью, работающей на нескольких уровнях вместо одного, включая одностороннее ОЗУ, может влиять на некоторые программы.
Одноранговые модули DIMM излучают меньше тепла и более надежны, чем двухранговые DIMM, поскольку содержат вдвое меньше микросхем. Это также одна из причин, по которой их предпочитают оверклокеры.
Ваш компьютер сможет использовать все сразу с SS RAM. Это позволяет вам увидеть каждое из его воспоминаний за один раз. С другой стороны, эти же чипы в DS RAM разделены на два разных банка. Компьютер может одновременно видеть только одну его часть, а не обе. Ваша система может не обращаться к противоположному концу этого банка при анализе самой первой части этого банка. Всякий раз, когда машина считывает другую половину данных, происходит то же самое. Оперативная память SS превосходит оперативную память DS. PIN-коды 33 и 45 используются на материнской плате, чтобы двустороннее хранилище могло работать правильно.
Из-за снижения производительности DS RAM устройства с повышенными правами могут не получить ее, хотя разница незначительна. Чтобы повысить эффективность компьютера, вы также выберете подходящий объем памяти, CL и другие важные факторы.
Если вы будете использовать свой компьютер регулярно, например, в школе или на работе, лучше выбрать самый низкий из двух вариантов. Поскольку различия между оперативной памятью SS и DS незначительны, ими можно пренебречь. Оперативная память только с одним набором микросхем известна как односторонняя ОЗУ. Это сокращает время, необходимое контроллеру для завершения работы. Когда вы используете свой компьютер для ресурсоемких рабочих нагрузок, оперативная память SS кажется более безопасной, чем оперативная память DS.
Assembler
Регистровые указатели и индексные регистры тесно связаны с определенными операциями.
- регистр SP ( Stack Pointer ) – всегда указывает на вершину стека, позволяет временно хранить адреса и иногда данные;
- регистр BP ( Base Pointer ) – обычно адресует переменные, хранимые в стеке, облегчает доступ к параметрам (данным и адресам), переданным через стек.
- регистр SI ( Source Index ) – является индексом источника и применяется для некоторых операций над строками (обычно связан с регистром DS);
- регистр DI ( Destination Index ) – является индексом назначения и применяется так же для строковых операций (обычно связан с регистром ES).
- регистр CS ( Code Segment ) – содержит начальный адрес сегмента когда (начало машинного кода программы). Этот адрес плюс значение смещения в командном указателе (IP) определяет адрес команды, которая должна быть выбрана для выполнения;
- регистр DS ( Data Segment ) – содержит начальный адрес сегмента данных (переменных, строк и т.п. данных, которыми оперирует программа);
- регистр SS ( Stack Segment ) – содержит начальный адрес сегмента стека;
- регистр ES ( Extra Segment ) – является вспомогательным регистром, используется при некоторых операциях над строками. В большинстве программ в ES и DS содержатся одинаковые адреса, но он может упрощать некоторые операции связанные с этими регистрами.
Регистр флагов так же состоит из 16 бит , из них используются только 9 .
Это регистр состояния процессора. Биты регистра состояния устанавливаются или очищаются в зависимости от результата исполнения предыдущей команды и используются некоторыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора. Отдельные биты флагов представляют одиночными буквами o, d, i, t, s, z, a, p, c или двумя буквами of, df, if, tf, sf, zf, af, pf и cf.
CF ( Carry Flag ) — флаг переноса при арифметических операциях. Содержит перенос из старшего бита после арифметических операций, а так же последний бит при сдвигах или циклических сдвигах.
PF ( Parity Flag ) — флаг четности результата, показывает четность младших восьмибитовых данных (1 – четное, 0 – нечетное).
AF ( Auxiliary Flag ) — флаг дополнительного переноса. Содержит перенос из 3 бита для 8-битовых данных, используется для специальных арифметических операций.
ZF ( Zero Flag ) — флаг нулевого результата. Показывает результат арифметических операций и операций сравнения (0 – ненулевой, 1 – нулевой результат).
SF ( Sign Flag ) — флаг знака (совпадает со старшим битом результата, 0 – плюс, 1 — минус).
TF ( Trap Flag ) — флаг пошагового режима (используется при отладке).
IF ( Interrupt-enable Flag ) — флаг разрешения аппаратных прерываний.
DF ( Direction Flag ) — флаг направления при строковых операциях. Обозначает левое или правое направление пересылки или сравнения строковых данных.
OF ( Overflow Flag ) — флаг переполнения. Указывает на переполнение старшего бита при арифметических командах.