Форум: "Основная";
Текущий архив: 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