MicrowaveDesigneR 0 14 февраля, 2010 Опубликовано 14 февраля, 2010 · Жалоба Вот вчера посмотрел R2009b под win7x64 и порадовался - текущий MATLAB шустр и приятен. Хотя пару лет назад я был о нем такого же мнения. ИМХО это субъективное ощущение сильно зависит от железа, на котором MATLAB пускается - i7 c 4 гигами ему вполне приятен. Шустр и оно не удивительно! Ведь такие продукты как MATLAB пишуться ориентируясь на архитектуру (я имею ввиду разрядность) процессора. На 64 разрядном коде, во-первых, доступно больше оперативной памяти (а она никогда лишней не бывала). Если на 32 разрядной Винде доступно не более 3 ГБ оперативы, то 64 разрядные допускают уже до 192 ГБ. Во-вторых, математические операции будут выполняться быстрее в MATLAB'е на 64 разрядной версии ОС, т.к. числа, с которыми он работает, уже без проблем могут быть занесены в регистр процессора без разбивки (все-таки регистр в 2 раза больше). Да и доступно теперь в процессорах, поддерживающих архитектуру x64, больше регистров общего назначения + дополнительные регистры. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 43 14 февраля, 2010 Опубликовано 14 февраля, 2010 · Жалоба Во-вторых, математические операции будут выполняться быстрее в MATLAB'е на 64 разрядной версии ОС, т.к. числа, с которыми он работает, уже без проблем могут быть занесены в регистр процессора без разбивки (все-таки регистр в 2 раза больше). Да и доступно теперь в процессорах, поддерживающих архитектуру x64, больше регистров общего назначения + дополнительные регистры. Второе сомнительно. Обе архитектуры (x32 и x64) считают на флоат-поинтах одинаково, т.к. у них FPP (float point processor) одинаков. А новый MatLab практически всю арифметику проворовачивает не в целых числах, а во флоатах, а там специализированные регистры (одной и той же длины в обеих архитектурах). В регистрах общего назначения флоат-числа сроду не хранились, не умеют те регистры с ними оперировать. А нынче MatLab переписали под SSE (SSE-2,3,4...) с которым компилятор легко обходится, когда как до того, использовался FPP стековой архитектуры (x87), из-за чего компилятор каждый раз передавливал промежуточные результаты в память. Вручную его запрограммировать так, чтобы промежуточные результаты в стеке держал, было можно, но для компилятора крайне сложно, т.к. в процессе вычислений глубина погружения постоянно меняется. На SSE-регистрах все делается примитивно просто, т.к. они по обращению разные. Из-за этого на SSE можно скомпилировать вычисление какой-нибудь сложной формулы быстрее, т.к. промежуточные результаты можно оставлять во флоат-регистрах, где они и были получены. А по мере необходимости проводить с ними арифметические операции напрямую (x87 может оперировать только верхушкой стека). Из-за этого экономится много операций по загрузке и чтению в память. А такие операции накладны, т.к. размерность числа там 64 бита. ... Я сама долгое время возилась с ускорением матричных операций, а потому знаю, наколько сильно скорость вычислений зависит от многих иных обстоятельств, от типа архитектуры мало зависимых. Например, достаточно выравнить расположение масива флоат-данных на адрес, кратный 16-ти байт, чтобы скорость расчетов возрасла в полтора раза только за счет особенностий организации памяти. Если x64 и может иметь здесь какое-либо преимущество над x32, то разве что в возможности записывать флоат-число в память и читать его оттуда за один такт (или за меньшее число тактов, чем в x32). Но это уже скорее относится к ширине шины, которая соединяет CPU и памятью (кэшем?). В этом вопросе я не сильна и ничего определенного сказать не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MicrowaveDesigneR 0 14 февраля, 2010 Опубликовано 14 февраля, 2010 · Жалоба Обе архитектуры (x32 и x64) считают на флоат-поинтах одинаково, т.к. у них FPP (float point processor) одинаков. Физически - да, регистры одни и те же. И в AMD64 архитектуре регистры с плавающей точкой - 80 битные. Но могут ли операциионные системы х86 (т.е. 32 разрядные) полностья их использовать - это вопрос. А нынче MatLab переписали под SSE (SSE-2,3,4...) с которым компилятор легко обходится... А эти регистры в AMD64 архитектуре - 128 разрядные. Они тоже были таковыми в х86? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 14 февраля, 2010 Опубликовано 14 февраля, 2010 · Жалоба А эти регистры в AMD64 архитектуре - 128 разрядные. Они тоже были таковыми в х86? Да, тоже. Другое дело, что в AMD64 их в два раза больше (16). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oleg_lap 0 7 марта, 2010 Опубликовано 7 марта, 2010 · Жалоба ... На 64 разрядном коде, во-первых, доступно больше оперативной памяти (а она никогда лишней не бывала). Если на 32 разрядной Винде доступно не более 3 ГБ оперативы, то 64 разрядные допускают уже до 192 ГБ.... что-то я не понял насчёт 192 ГБ, 64 разрядная шина позволяет обратиться только к 16 ГБ ОЗУ. 32 разрядной шине доступно 4 ГБ, просто ОС занимет около 1 ГБ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forever failure 0 8 марта, 2010 Опубликовано 8 марта, 2010 · Жалоба что-то я не понял насчёт 192 ГБ, 64 разрядная шина позволяет обратиться только к 16 ГБ ОЗУ. Чо-то я тоже не понял вашей арифметики. Четырёхпудовая (4x16 = 64) разрядность регистров общего назначения позволяет таки адресовать 2^64 = 16 ГигаГигаБайт = 16 ЭкзаБайт. Правда реальная физическая шина адреса всё равно несколько уже, но всё равно адресует терабайты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
l1l1l1 0 8 марта, 2010 Опубликовано 8 марта, 2010 · Жалоба что-то я не понял насчёт 192 ГБ, 64 разрядная шина позволяет обратиться только к 16 ГБ ОЗУ. очевидно, что вы имеете в виду не возможности 64 разрядной шины как таковой, а возможности вполне определенной материнки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться