Вверх ↑
Этот топик читают: Гость
Ответов: 8926
Рейтинг: 823
#16: 2011-04-30 20:46:08 ЛС | профиль | цитата
Dilma[/b], я польщён Вашими предположениями о моих знаниях
Dilma писал(а):
получить доступ к ячейки за пределами 4Gb
[b] полагаю, что в 32-х разрядной машине и память имеет организацию 32хN, т. е. 4Gb памяти имеют 1Gb адресов машинных слов длиной 4 байта, и без привлечения дополнительных регистров можно адресовать 4Gb машинных слов каждое по 4 байта, итого 16Gb памяти.
Говоря про лапшу на ушах, я спрашивал, в каком виде внутри процессора проходят команды, например, на чтение памяти: при 32 битах явно команда в двух ячейках, сама команда и часть адреса в одной ячейке, остальная часть адреса в другой, чтобы получить весь адрес как раз и нужна приведённая выше Asm-команда. Если же процессор 64-х битный, то команда выполняется без промежуточных телодвижений.
А если процессор 128-ми битный, то в одной ячейке может храниться 3 адреса по 40 бит и 256 машинных команд, например: число из ячейки А сложить с числом из ячейки В и результат поместить в ячейку С и ничего лишнего
карма: 19

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#17: 2011-04-30 20:52:49 ЛС | профиль | цитата
Dilma писал(а):
Вопрос: как мне модифировать код так, чтобы получить доступ к ячейки за пределами 4Gb

В данном случае, одной командой -- никак, dword оганичивает адресацию.

Гы, чего это вы тут на меня наехали. Я тут, понимаете, пошутил, а вы на меня собак спустили
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#18: 2011-04-30 20:57:45 ЛС | профиль | цитата
Леонид писал(а):
полагаю, что в 32-х разрядной машине и память имеет организацию 32хN, т. е. 4Gb памяти имеют 1Gb адресов машинных слов длиной 4 байта

нет, это вам не кластеры на диске. Если бы так же было и с памятью, то работа с массивом байт (в котором требуется читать и писать только один байт за раз) была бы чудовищно ресурсоемкой. Поэтому для индексной адресации более 4Gb нужен
а) либо регистр с битностью более 32х битов
б) некий невероятно костыльный механизм, который бы линейную память разбивал на фрагменты по 4G, с которыми могли бы работать 32х битные программы и регистры.
------------ Дoбавленo в 20.57:
nesco писал(а):
В данном случае, одной командой -- никак

раз одной никак, то о маркетинге и запудривании мозгов потребителям речи уже не идет
карма: 27
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#19: 2011-04-30 21:02:31 ЛС | профиль | цитата
Dilma писал(а):
некий невероятно костыльный механизм, который бы линейную память разбивал на фрагменты по 4G, с которыми могли бы работать 32х битные программы и регистры

Поди, этот костыльный механизм и применяется в 128 Gb ядре Win7 x32. Что-то, типа, страничной адресации с общим стеком
карма: 22

0
Ответов: 8926
Рейтинг: 823
#20: 2011-04-30 23:02:41 ЛС | профиль | цитата
Dilma писал(а):
работа с массивом байт (в котором требуется читать и писать только один байт за раз)

На мой не замутнённый знаниями взгляд, при побайтных данных каждый байт, например символ текста, в ОЗУ хранится в одной ячейке, будь она 8-ми, 16-ти, 32-х или 64-х битная. Долго-ли эксперемент сделать: пишу в одну строчку 1000000 символов и сохраняю на диск файлом Test.txt, как и положено (при последовательной записи) размер файла 1000000/1024=977 Кб +-размер кластера.
Делаю Project1 с StrList и запускаю -- размер Project1.exe 1204 Кб, открываю этот файл -- размер Project1.exe 8728 Кб, т. е. 1000000 байт заняли в ОЗУ 7522 Кб, что в почти 8 раз больше. Отсюда делаю два вывода:
1. Действительно байтовые данные занимают одну ячейку, в моём случае 8 байт;
2. И правда 64-х битная организация
filetxt.jpg
strlist_0.jpg
strlist_1mb.jpg
карма: 19

0
файлы: 3filetxt.jpg [13.7KB] [230], strlist_0.jpg [56.4KB] [270], strlist_1mb.jpg [46.3KB] [252]
Администрация
Ответов: 15295
Рейтинг: 1519
#21: 2011-05-01 00:04:25 ЛС | профиль | цитата
Леонид, куда-то не туда вас понесло:

Леонид писал(а):
в ОЗУ хранится в одной ячейке, будь она 8-ми, 16-ти, 32-х или 64-х битная

не путайте битность регистров CPU и разрядность шины памяти - это разные вещи! У нас уже давным давно разрядность шины памяти не делают менее 128 бит (чаще 256) и к CPU это никакого отношения не имеет

Леонид писал(а):
открываю этот файл -- размер Project1.exe 8728 Кб, т. е. 1000000 байт заняли в ОЗУ 7522 Кб, что в почти 8 раз больше

т.е. утверждается, что 1 байт занимает в памяти 256бит?
карма: 27
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#22: 2011-05-01 00:11:36 ЛС | профиль | цитата
Dilma писал(а):
т.е. утверждается, что 1 байт занимает в памяти 256бит?

Это нонсенс. Леонид напрочь перепутал размер исполняемого модуля на диске и выделенную под работу этого модуля динамическую память
карма: 22

0
Ответов: 8926
Рейтинг: 823
#23: 2011-05-01 00:12:29 ЛС | профиль | цитата
Dilma писал(а):
1 байт занимает в памяти 256бит
Нет, 64 бита (в восемь раз больше)
карма: 19

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#24: 2011-05-01 00:14:42 ЛС | профиль | цитата
Леонид, ты хоть знвешь как построено выделение памяти под StrList и каждую его строку
А тебе известно такое понятие, как гранулированность памяти
карма: 22

0
Ответов: 8926
Рейтинг: 823
#25: 2011-05-01 00:15:36 ЛС | профиль | цитата
nesco, перепутать я не мог, нельзя перепутать то, чего не знаешь. Я как боцман, "что вижу, то и наблюдаю, а что наблюдаю, то и записываю"
карма: 19

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#26: 2011-05-01 00:22:48 ЛС | профиль | цитата
Леонид, я не зря спросил про гранулированность памяти, а она в системе составляет 64 кб, даже, если ты попросишь один байт, выделится 64 кб. Ни на какие мысли не наталкивает
карма: 22

0
Ответов: 3889
Рейтинг: 362
#27: 2011-05-01 00:32:13 ЛС | профиль | цитата
nesco, про страничность памяти угадал, так аппаратно и реализовывалось на протяжении 16 (!) лет начиная с Pentium Pro. С 1995 года основные интеловские процессоры до 64 Гигабайт в 32-хбитном режиме поддерживают без проблем.

На данный момент 32-битные приложения, кстати, МОГУТ адресовать более 4Гб памяти, только очень сложным способом (тоже страничками, но не по 4 Гб, а в "окне" - на регион адресного пространства выборочно проецируются разные участки памяти). Приложение должно иметь привелегии блокирования страниц памяти и назначения им (страницам) атрибутов.
карма: 1

0
Ответов: 8926
Рейтинг: 823
#28: 2011-05-01 00:32:58 ЛС | профиль | цитата
Леонид писал(а):
На мой не замутнённый знаниями взгляд,
мне бы кто объяснил попроще, а спрашивать бесполезно, буду молчать, как партизан
карма: 19

0
Ответов: 1376
Рейтинг: 197
#29: 2011-05-01 00:40:47 ЛС | профиль | цитата
[flood]
1nd1g0 писал(а):
nesco, про страничность памяти угадал
Прям, игра Миллион А если бы не угадал?[/flood]
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#30: 2011-05-01 00:45:25 ЛС | профиль | цитата
Леонид писал(а):
мне бы кто объяснил попроще, а спрашивать бесполезно, буду молчать, как партизан

клик по кнопке

Add(Button,12089024,105,161)
{
Left=105
Top=160
link(onClick,3044783:doit,[])
}
Add(InlineCode,3044783,168,161)
{
WorkPoints=#4:doit|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|42: procedure doit(var d:Tdata; i:word);|5: end;|0:|14:implementation|0:|48:procedure THiAsmClass.doit(var d:Tdata; i:word);|14:var p:pointer;|5:begin|27: getmem(p, 20*1024*1024);|4:end;|0:|4:end.|
}

какой прирост дает? по 160Мб?
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)