Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Многомерные динамические массивы   Найти похожие ветки 

 
Sha ©   (2004-04-29 15:51) [40]

> Igorek ©   (29.04.04 15:37) [38]

> Надеюсь ты имеешь ввиду динамический массив. В моем понимании
> таковым является массив в котором размерности при написании
> кода неизвестны.

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


 
Sha ©   (2004-04-29 16:09) [41]

> WebErr ©   (29.04.04 15:41) [39]

> Я бы даже сказал, что многомерных массивов вообще не существует в машинной логике

А команда MOV EAX,[ECX+EDX] из какой логики?
А переменные существуют? А может это все один массив MEM[0..MaxInt]?
:))


 
Goida ©   (2004-04-29 16:20) [42]


> Sha

Команда это одно, а в памяти все равно - линия...


 
WebErr ©   (2004-04-29 16:25) [43]


> А команда MOV EAX,[ECX+EDX] из какой логики?

Дилетантский выпад - асм я и сам знаю, индексация всё равно в линию! ;)
Кстати, могли бы тогда уж ткнуть в меня чем-то наподобие DS:[BX][SI]. Вот где она иллюзия двойной индексации на самом низком уровне (прости, асм).


 
Sha ©   (2004-04-29 16:36) [44]

> WebErr ©   (29.04.04 16:25) [43]
> Дилетантский выпад - асм я и сам знаю, индексация всё равно в линию! ;)

Вовсе необязательно быть столь самокритичным :)))
Хотя, наверное, именно поэтому с тобой так приятно разговаривать.


 
Anatoly Podgoretsky ©   (2004-04-29 16:37) [45]

Goida ©   (29.04.04 16:20) [42]
Для многомерных динамических, при современной реализации это не так, это много линий.


 
WebErr ©   (2004-04-29 16:41) [46]


> Anatoly Podgoretsky ©   (29.04.04 16:37) [45]

Но линий, и никаких матриц, кубов и прочей нечисти! :)


 
Sha ©   (2004-04-29 16:47) [47]

> Goida ©   (29.04.04 16:20) [42]
> Команда это одно, а в памяти все равно - линия...

Еще иногда а в памяти прямоугольник, а иногда а в памити куб.
Проходили, или уже прошли?


 
Goida ©   (2004-04-29 16:54) [48]


> Sha

Не может быть в памити куба. Память линейна. Но если ты говоришь о логическом представлении...


 
WebErr ©   (2004-04-29 16:59) [49]


> Sha ©   (29.04.04 16:47) [47]

What you see is not what is it
Первое правило программера: Не верь глазам своим! ;)


 
Anatoly Podgoretsky ©   (2004-04-29 17:03) [50]

Goida ©   (29.04.04 16:54) [48]
Кто сказал, про банки слышал, классический пример матрицы.


 
WebErr ©   (2004-04-29 17:06) [51]


> Anatoly Podgoretsky ©   (29.04.04 17:03) [50]

Что за банки?


 
Sha ©   (2004-04-29 17:07) [52]

> Goida ©   (29.04.04 16:54) [48]
> Не может быть в памити куба. Память линейна. Но если ты говоришь о логическом представлении...

Еще как может.
Память линейна как раз в логическом представлении программиста. Конструктивно удобнее разбивать адрес на две (как в современных ОЗУ) или три (как это было раньше) группы битов, и представлять эти группы битов как индексы для доступа к "прямоугольной" или "кубической" памяти. Это делается прозрачно для программиста.


 
Sha ©   (2004-04-29 17:10) [53]

> WebErr ©   (29.04.04 16:59) [49]
> Первое правило программера: Не верь глазам своим! ;)

Так то программера, а я программист.


 
Goida ©   (2004-04-29 17:12) [54]

Хорошо. Раз так, то дайте определение ВМ Фон Неймана. Компьютер пока еще не стал чем-то иным.


 
Sha ©   (2004-04-29 17:13) [55]

Goida ©   (29.04.04 17:12) [54]

Ты пришел сюда за знаниями, или за чем-то еще?


 
Goida ©   (2004-04-29 17:17) [56]


> Sha

За знаниями. Но Вы говорите вещи, которые не соответствую классическому описанию хранения информации в памяти машины.


 
Goida ©   (2004-04-29 17:18) [57]


> Конструктивно удобнее разбивать адрес на две (как в современных
> ОЗУ) или три (как это было раньше) группы битов

Скажи, ты имел ввиду что-то типа сегментов и смещений?


 
Smithson ©   (2004-04-29 17:23) [58]

Нет, речь идет о контроллере памяти :)
Северном мосте, так сказать :)


 
Sha ©   (2004-04-29 17:26) [59]

Goida ©   (29.04.04 17:17) [56]

Описания бывают разные.
Надо различать логическое представление программиста об усройстстве машины и ее физическую реализацию.
Знание физической реализации часто помогает писать очень эффективные программы. В сети много сайтов, посвященных оптимальному программированию. Там к примеру, найдешь примеры эффективного прогаммирования для Intel, опирающиеся на систему команд и организацию оперативной памяти.


 
Goida ©   (2004-04-29 17:32) [60]


> Sha

Хотя бы одну ссылку о том, о чем Вы говорите. Пожалуйста. Мне все равно: рус., анг..


 
Sha ©   (2004-04-29 17:39) [61]

developer.intel.com
www.agner.org/assem
www.wasm.ru


 
Goida ©   (2004-04-29 17:41) [62]

Хорошо, я посмотрю. Не обещаю, что сразу же. Но если я замечу, что Вы в чем-то ошиблись, обязательно ;) Вам об этом сообщу. Спасибо за ссылки :)


 
Sha ©   (2004-04-29 17:46) [63]

Goida ©   (29.04.04 17:41) [62]

Ага, сообщи :)
Перед этим еще стоит прочесть какую-нибудь хорошую книгу по архитектуре современных ЭВМ.


 
Anatoly Podgoretsky ©   (2004-04-29 17:52) [64]

Насчет "матричной" памяти, не получится используется во многих системах, Виндоус тоже давно поддерживает, граница в 4 гб, давно не граница.


 
Goida ©   (2004-04-29 17:55) [65]


> Sha

Хватит сарказничать. Я достаточно хорошо знаю архитектуру ЭВМ. Если увижу, что Вы не правы, сообщу... В другом случае признаю правоту Вашей точки зрения...


 
Sha ©   (2004-04-29 18:14) [66]

> Goida ©   (29.04.04 17:55) [65]
> Хватит сарказничать. Я достаточно хорошо знаю архитектуру ЭВМ.

Думаю, знания никому не вредят.

> В другом случае признаю правоту Вашей точки зрения...

Да не надо мне этого.


 
TUser ©   (2004-04-29 19:42) [67]


> В таком случае: А есть ли тогда хоть в каком-то языке динамические
> многомерные массивы? ;-J

Да, ваще нигде нет никаких многомерных массивов. Память организована в виде одномерного массива, а многомерность эмулируется компиляторами языков высокого уровня, вне зависимости от того динамический массив или нет.


 
CyberStorm   (2004-04-29 20:39) [68]

Понаписали то :)
Вопрос был про многомерный динамический массив... то что у Borland он сделан при помощи указателей на одномерные динамические массивы вполне закономерно и исходит из принципов работы диспетчера памяти как Windows так и "надстройки" над Windows-ким диспетчером от Borland. Понятие "динамический" подразумевает произвольное изменение размеров элементов по первому требованию и использование указателей на одномерные динамические массивы позволяет работать с многомерными структурами самым эффективным образом - быстрее просто не придумать. В статических многомерный массивах нет проблемы перераспределения памяти при изменениях размерности - "там все делается раз и навсегда" поэтому и организация другая и доступ к элементам более быстрый, но гибкости меньше.


 
Goida ©   (2004-04-29 21:45) [69]


> Sha

Хочу уточнить. Что ты имеешь ввиду под не линейностью физического представления памяти? Надеюсь, я правильно тебя понял? Ты утверждаешь, что в современных ЭВМ память может быть матрицей, кубом или чем-то подобным. Так? Или ты не это имеешь ввиду? Просто, чтобы мне что-то искать, мне нужно точно знать твою позицию.

> TUser

Это и я говорил. Только вот мне не поверили...


 
Sha ©   (2004-04-29 23:50) [70]

> Goida ©   (29.04.04 21:45) [69]
> ...Ты утверждаешь, что в современных ЭВМ память может быть матрицей...

Утверждаю :)
В частности, утверждаю, что кеш данных L1 - это матрица:

Pentium, PPro            -  256 * 32,
PMMX, PII, PIII          -  512 * 32,
P4 Northwood             -  128 * 64,
Pentium 4 Prescott       -  256 * 64,
Athlon XP, K8            - 1024 * 64.


Утверждаю, что:
Все линии кеша выравниваются на границу, равную своей длине.
Доступ к данным в пределах одной линии быстрее, чем случайный.
Работа с данными, пересекающими границу, неэффективна.
Ну и много чего еще.

"Искать" это надо в описании микропроцессора.
Сейчас об этом стали писать даже в популярных журналах.


 
Antichrist ©   (2004-04-29 23:50) [71]

Да вспомните машины (Поста, Тьюринга, РАМ) и желание квадрировать и кубировать память отпадет как неактуальное.


 
Sha ©   (2004-04-30 07:42) [72]

Goida ©   (29.04.04 21:45) [69]
Sha ©   (29.04.04 23:50) [70]  

Думаю, что ты как человек, достаточно хорошо знающий архитектуру ЭВМ, понимаешь, что структура кеша в конечном счете определяет структуру всей памяти. Именно потому, что в кеш необходимо грузить линию целиком при доступе к яейке памяти по произвольному адресу и проиводится деление адреса на группы битов, упомянутое ранее.


 
Goida ©   (2004-04-30 10:26) [73]


> Sha

Думаю, опять же, что мы с тобой говорим о разном. Пока я не берусь утверждать окончательно, т.к. не могу тебе сейчас привести ссылки на источники (конспекты и книги), но думаю так. Ты говоришь все таки о логической структуре памяти. А я о её физической, т.е. на схеме. Я предпологаю, что при обращении к памяти действительно программист записываеть может двумерную адресацию в схему памяти, но в результате работы дешифраторов и ассоциативного устройства памяти, которое, кстати, не отменяет ее линейную структуру, адрес преобразуется в линейный. Таким образом, преобразование двумерного адреса в линейный будет скрато от программиста на аппаратном уровне.
Но, ты говоришь о кеше. На сколько я помню, в нем как раз и используется ассоциативное устройство памяти. Так как такое устройство, на сегодняшний день, позволяет иметь наиболее быстрый доступ к даннм. Устройство не могу привести, т.к. с ходу в инете не нашел. Но могу тебя заверить, такое устройство - это надстройка над линейно физической памятью. Найду, приведу тебе её устройство.


 
Sha ©   (2004-04-30 10:39) [74]

Goida ©   (30.04.04 10:26) [73]

Хорошо бы еще заверить производителей чипсетов и чипов памяти.
Заверяю тебя, они знают недостаточно - у них в техдокументации такое понаписано :)


 
Goida ©   (2004-04-30 11:03) [75]

Да, у них написано, что память разбивается, выравнивается и много еще чего написано. Но это сделано для того, чтобы быстро получить линейный адрес в физической памяти...


 
Sha ©   (2004-04-30 11:13) [76]

Для начала
http://developer.intel.com/design/pentium4/manuals/
http://developer.intel.com/design/Pentium4/documentation.htm
http://www.amd.com/us-еn/Processors/TechnicalResources/0,,30_182_739,00.html
http://www.amd.com/us-en/Processors/DevelopWithAMD/0,,30_2252,00.html
http://www.via.com.tw/en/Digital%20Library/PR040212KT880.jsp
http://www.via.com.tw/en/k7-series/kt880.jsp


 
Goida ©   (2004-04-30 11:34) [77]


> Sha

Спасибо, посмотрю :)



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.61 MB
Время: 0.032 c
3-1082238236
SergeyV
2004-04-18 01:43
2004.05.16
Соединение с MS-SQL2000 из консольного приложения


1-1083160531
lelikrav
2004-04-28 17:55
2004.05.16
DOS OEM и windows 2000


3-1081932454
AndrewK
2004-04-14 12:47
2004.05.16
Как обратиться к DBF через ADO напрямую без ODBC?


14-1082449384
Igorek
2004-04-20 12:23
2004.05.16
Предлагаю ввести значок "Ламер", который выдавать всем желающим.


14-1082571257
ИМХО
2004-04-21 22:14
2004.05.16
Свежий взгляд на сайт Мастера Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский