Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 82 • Страница 3 из 5<  1  2  3  4  5  >
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Member
Статус: Не в сети
Регистрация: 18.01.2007
Вот ссылка на мою беседу с программистом, одним из создателей игры СЯ (Andrey12345):
http://www.sukhoi.ru.sixxs.org/forum/sh ... 98&page=44 (и предыдущая пара страниц)

Мы здесь переходим на 64-разрядные ОС, а программисты (от кот., между прочим, зависит смысл этого перехода) сомневаются в эффективности 64-бит в принципе, особенно для игр.
Т.е. вплоть до того, что, например, те же игры не только не выиграют, а даже проиграют от такого перехода!

В общем, делимся своим мнением по этому вопросу.

П.с. Что касается меня, то я просто в недоумении...
____________________________________________________________________

Ray Adams
Цитата:
Ну если его код в 64 битном исполнении тормозит, то это не значит, что писать под 64 бита это плохо. ну не виджит человек в этом никакой для себя пользы, ну и пусть и дальше так не видит. 64 бита от этого не пострадают. Я сам программист и знаю, как часто просто из-за врождённой для каждого программера лени, нет никакой охоты переписывать что-то под новую платформу. И тем более оптимизировать. А уж консерватизм программистов это вообще притча и т.д.

Можно конечно тупо перекомпилировать, но такой в лоб подход не всегда принесёт пользу.
Можешь программеру показать Кризис. Что 64 , что 32 в принципе идут одинаково в плане скорости! Но! При таких обьемах текстур и всего остального 64 бита дают выигрыш хотябы в том, что памяти для игры будет больше чем 2 гига.


Грецкий!
Цитата:
-AG- писал(а):
Есть ли реальные преимущества 64-бит над 32-мя, кроме расширения адресного пространства?

Да.
-AG- писал(а):
Все ли типы приложений выиграют при переходе на 64-битный код?

Ряду приложений никакой разницы.
-AG- писал(а):
Может ли 64-битный код ускорить работу приложения?

Да, но не каждого.
-AG- писал(а):
Не может ли получиться так, что само расширение адресного пространства в ряде случаев вызовет снижение эффективности работы кода, например, в результате увеличения задержки при работе с большим количеством случайных данных малого объема?

Нет.
-AG- писал(а):
Наконец, насколько эффективен (или наоборот) переход на 64-бит в игровых приложениях, в частности для расчета сложных матмоделей симуляторов, физики, искуственного интеллекта?

В целом, чем больше вычислений с высокой точностью, тем больше прирост. Надо иметь ввиду, что процессор во время игры занимается непосредственно вычислениями далеко не все время (зависит от самой игры).

Это обсуждалось и достаточно давно.


-AG-
Цитата:
Цитата:
Грецкий! писал(а):
-AG- писал(а):
Есть ли реальные преимущества 64-бит над 32-мя, кроме расширения адресного пространства?
Да.

Не могли бы вы конкретизировать, какие?
Грецкий! писал(а):
В целом, чем больше вычислений с высокой точностью, тем больше прирост. Надо иметь ввиду, что процессор во время игры занимается непосредственно вычислениями далеко не все время (зависит от самой игры).

Я так понимаю, что особенно строгим и точным в матмоделях симуляторам переход на 64-бит пошел бы только на пользу?


Obscury
Цитата:
Грецкий! писал(а):
-AG писал(а):
Есть ли реальные преимущества 64-бит над 32-мя, кроме расширения адресного пространства?
Да.

Какие, например?
Я кроме увеличения адресного пространства никаких преимуществ не вижу. В своей программисткой практике очень редко сталкивался с необходимостью в 64 битном типе данных. Возможно для каких-то финансовых программ это может помочь, где ещё, даже не знаю. Что касается научных программ, то тут в основном всё вертится вокруг FPU, а на мощность типов double, float и др. битность процессора не влияет. Игровые миры строятся процессором в действительных числах (т.е. здесь тоже важнее FPU), кроме того, в играх больше используются регистры SSEx, которые и так 128 битные и их битность не зависит от битности процессора. Физика - это тоже FPU. Есть, конечно, ещё AI - может там можно что-то выиграть, сомнительно...
А вот расхож памяти увеличится, так как указатели (адреса) теперь 8 байт занимают ...

DenisMak
Цитата:
по теме:
по 64 битам я вижу 2 как минимум очень ценных +
-больше памяти без лишнего геммора
-регистров в 2 раз больше и они в 2 раза шире - больше можно хранить в регистрах не обращаясь к кешу совсем
и один маленький плюс - 64битные данные обрабатываются/могут обрабатываться одной командой вместо... как часто это используется зависит от задачи

но за это надо платить:
-больший перерасход памяти начиная с указателей ...
-контекст задачи становится больше и переключение его занимает больше времени (это как догадка, нигде не читал про 64битный режим)
-(где то здесь на форуме прочитал) возрастает нагрузка на пропускную способность того же кеша (... которая в результате может тормозить, но тоже измерить это стандартными средствами не вижу как.) и кеш хранит меньше параметров хоть и при том же обьёме (размерность параметров увеличивается) (противовес большему кол-ву РОНов)

в общем для себя вижу такую картину - увеличение возможностей использования памяти и скорости части мелких алгоритмов (тут всё сильно зависит от задачи и может действительно быть и 0% прироста а может и >100% достичь если разрядность нужна + новые регистры уменьшат обращение к кешу) за счёт уменьшения производительности _в некоторых/особых_ случаях

это только моё мнение

asmfan
Цитата:
DenisMak писал(а):
но за это надо платить:
-больший перерасход памяти начиная с указателей ...

Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков.
DenisMak писал(а):
-контекст задачи становится больше и переключение его занимает больше времени (это как догадка, нигде не читал про 64битный режим)

используются те же инструкции, благо в них заложен буфер подходящий для 32/64 битн. режимов. А запись 8ми (для целоцичленных) и 8ми для ХММ дополнительных регистров не сильно замедляет дела. Нет недостатков.

+Скорость набирается за счёт конвенции вызовов в 64 битах - стек приложения приблизительно постоянен всегда, как неплавающий буфер, т.е. не приходится перемещать указатель стека и выделять новую память. Очень удобно и быстро.

+для тех, кто не знает, 4 первые параметра ф-ий передаются через регистры, и не пишите про якобы "злоупотребление" вызовами мелких ф-ий - это не вредит по большому счёту.

Цитата:
pusha/popa нет в 64 битах. API и конвенции вызова для 64 бит предусматривают передачу первых 4х парамтров как через РОН так и ХММ, либо через те и те одновременно в определённых ситуациях.
Под 64 бит ОС 64 выигрывают у 32 из-за отсутствия WOW переходников, посему никакие рекомендации мол если меньше 3х гигов и проч. не должны смущать. Если писать универсальный код, то перекомпиляции ис-под С/С++ компилера будет достаточно.
size_t, *_PTR, прочие макро- и просто фичи для компилера.


Последний раз редактировалось -AG- 01.08.2008 15:14, всего редактировалось 4 раз(а).


Партнер
 

Member
Статус: Не в сети
Регистрация: 01.12.2006
DenisMak Да кстати, про лишние регистры я и забыл. Это на самом деле важнее, чем возможность работы с 64 битными целыми числами. Но кстати тоже есть минус - при вызове функции все эти регистры (к тому же вдвое большего размера) надо сохранять в стеке - расход памяти и нагрузка на ее ПСП увеличится, а так же скорее всего функции будут вызываться медленнее. (отсюда вывод - не злоупотреблять многократным вызовом мелких функций, пользоваться инлайновыми, это же относится и к глубоким рекурсиям)


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Afx нужно не злоупотреблять разрядностью параметров в первую очередь, и тут есть припон для использования 32х битных команд в 64битном режиме используется префикс (эт уже ассемблер) - увеличение длины команды, но реально на производительность думаю почти не влияет


 

Member
Статус: Не в сети
Регистрация: 05.12.2006
Откуда: Из-за компутера
DenisMak писал(а):
но за это надо платить:
-больший перерасход памяти начиная с указателей ...

Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков.
DenisMak писал(а):
-контекст задачи становится больше и переключение его занимает больше времени (это как догадка, нигде не читал про 64битный режим)

используются те же инструкции, благо в них заложен буфер подходящий для 32/64 битн. режимов. А запись 8ми (для целоцичленных) и 8ми для ХММ дополнительных регистров не сильно замедляет дела. Нет недостатков.

+Скорость набирается за счёт конвенции вызовов в 64 битах - стек приложения приблизительно постоянен всегда, как неплавающий буфер, т.е. не приходится перемещать указатель стека и выделять новую память. Очень удобно и быстро.

+для тех, кто не знает, 4 первые параметра ф-ий передаются через регистры, и не пишите про якобы "злоупотребление" вызовами мелких ф-ий - это не вредит по большому счёту.

_________________
enthusiast


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
asmfan писал(а):
Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков.

обьясни или ссылочку дай, что сказать то хотел?

asmfan писал(а):

используются те же инструкции, благо в них заложен буфер подходящий для 32/64 битн. режимов. А запись 8ми (для целоцичленных) и 8ми для ХММ дополнительных регистров не сильно замедляет дела. Нет недостатков.

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

asmfan писал(а):

+Скорость набирается за счёт конвенции вызовов в 64 битах - стек приложения приблизительно постоянен всегда, как неплавающий буфер, т.е. не приходится перемещать указатель стека и выделять новую память. Очень удобно и быстро.

тоже не особо понятно

asmfan писал(а):

+для тех, кто не знает, 4 первые параметра ф-ий передаются через регистры, и не пишите про якобы "злоупотребление" вызовами мелких ф-ий - это не вредит по большому счёту.

эх давнооо я изучал ассемблер и чота такое припоминаю ))) тем более тогда

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


Последний раз редактировалось DenisMak 01.08.2008 10:33, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Причем тут параметры, я про другое. При вызове любой функции, даже если она вообще без параметров и состоит из одной команды RET, в стек сохраняются все РОНы и адрес возврата, а в 64 бит РОНов в 2 раза больше, и размер уних в 2 раза больше - отсюда больший расход стека.

asmfan
Цитата:
+для тех, кто не знает, 4 первые параметра ф-ий передаются через регистры, и не пишите про якобы "злоупотребление" вызовами мелких ф-ий - это не вредит по большому счёту.

Насколько я знаю, это зависит исключительно от компилятора (или от программиста, если на чистом асме писать).


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Afx
Afx писал(а):
При вызове любой функции, даже если она вообще без параметров и состоит из одной команды RET, в стек сохраняются все РОНы и адрес возврата

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


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Екатеринбург
asmfan писал(а):
Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков.

Это когда используешь вызов сделанных в коде функций, а когда функции у тебя заменяемые напр. "PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT" то тут уж ничего не поделаешь придется использовать 64-битные, кроме того 64-битные придется использовать при доступе к указателям членам класса, напр. "struct Some { char *str; int *nums; };"
Короче есть и преимущеста у 64 бит, а есть и недостатки и в случе если программе хватает 3гб памяти лучше делать ее 32-битной чем возиться с 64-битностью. Кроме того сам мелкософт ставит палки в колеса разработчикам, желающим перейти на 64 бита, т.к. бесплатный Visual Studio 2008 Express edition компилит код только в 32-битные ехе-шники.

_________________
|АМД процы не так уж и плохи|
|Но все-таки Интел лучше|


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
DenisMak Да, я немного напутал. Автоматически это все сохраняется в прерывниях, а для функций есть команда PUSHA (и соответственно POPA), которая сохраняет РОНЫ. Адрес возврата сохраняется/восстанавливается автоматически командами CALL/RET. Но это в асме, вручную, можно не сохранять регистры если не надо, а компилятор все равно воткнет эти команды в любую функцию.

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

Насчет передачи параметров: через регистры действительно самый быстрый способ, быстрее чем через стек, но он не уневерсальный, поэтому (во всяком случае нас так учили) большинство компиляторов данные передают через стек. API функции например все так работают (т.е.вызов ф-и MyFunc(X,Y) будет выглядеть так:
PUSH Y
PUSH X
CALL MYFUNC
)


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Afx писал(а):
компилятор все равно воткнет эти команды в любую функцию.
допускаю это в след случаях: только если ваш компилятор, тот который вы изучали, при использовании спец техники для упрощения(или стандартизации при отладке) или анализом последущей функции что так будет дешевле (оптимизация компилятором). но на счёт всё равно - это не верно


 

Junior
Статус: Не в сети
Регистрация: 08.01.2008
Откуда: Иваново
Как только играм понадобится больше 4 гигабайтов - так сразу ПО начнут оптимизировать под 64-х битные вычисления.
А сейчас рассуждения по теме не имеют ни какого смысла.
Мое мнение поставил 4 гига - ставь 64-ю версию.

P.S. Эту тему надо поднять года через два.

_________________
Сначала подумай головой, а потом уже делай руками


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
BloodyWerewolf писал(а):
asmfan писал(а): Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков.

Это когда используешь вызов сделанных в коде функций, а когда функции у тебя заменяемые напр.

вы про смещение чтоли?
asmfan а указатель на структуру например тоже будет смещением? получается где то должен быть base и при каждом доступе проц должен складывать base+offset - возрастает длина команды (на счёт скорости выполнения тоже мне кажется не останется той же) + base - где то хранить надо а это либо рон или индексный регистр либо (что ещё хуже) память - дешвле сразу 64 битные указатели хранить, хотя чего то мож и не знаю. да и потом если будет такой base - значит heap 32битный -> своя модель памяти под которую должен быть заточен (как минимум знать) компилятор чтобы правильно обращаться к тем или иным данным, хотя в принципе очень даже ничего (только при поддержке компилятора) если хипа достаточно для промежуточных а остальное пространство используется допустим для мапинга/проецирования файлов в память для доступа к текстурам например.

такое используется в компиляторах? мне кажется это сильно могло бы сократить перерасход памяти в структурах данных


Последний раз редактировалось DenisMak 01.08.2008 11:16, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 05.12.2006
Откуда: Из-за компутера
pusha/popa нет в 64 битах. API и конвенции вызова для 64 бит предусматривают передачу первых 4х парамтров как через РОН так и ХММ, либо через те и те одновременно в определённых ситуациях.
Под 64 бит ОС 64 выигрывают у 32 из-за отсутствия WOW переходников, посему никакие рекомендации мол если меньше 3х гигов и проч. не должны смущать. Если писать универсальный код, то перекомпиляции ис-под С/С++ компилера будет достаточно.
size_t, *_PTR, прочие макро- и просто фичи для компилера.

+есть гугл и что такое RIP можно посмотреть там. База - это instruction pointer, если в ближаих +-2х Гигабайтах находится то, что нужно адресовать, то будет использовано именно смещение, а не абсолютная адресация.
Естественно это всё для заранее известного адреса ибо смещение до данных можно посчитать только статически иначе же полные указатели, которые хранятся в РОН и работают по косвенной адресации, тоже дёшево по скорости и кол-ву кода. Единственная команда работающая непосредственно с 64 битн числами - mov! Все остальные через неё, если надо.

_________________
enthusiast


Последний раз редактировалось asmfan 01.08.2008 11:23, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 06.11.2003
asmfan писал(а):
+есть гугл и что такое RIP можно посмотреть там. База - это instruction pointer, если в ближаих +-2х Гигабайтах находится то, что нужно адресовать, то будет использовано именно смещение, а не абсолютная адресация

ты сказал об одном частном случае поэтому
asmfan писал(а):
Они кодируются RIP'ом в 4 байта как и абсолютные указатели в 32битах. Нет недостатков

крайне не верно для общего случая


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
asmfan
Цитата:
pusha/popa нет в 64 битах.

Интересно, а как тогда регистры сохранять? по одному?


 

Member
Статус: Не в сети
Регистрация: 05.12.2006
Откуда: Из-за компутера
Afx писал(а):
а как тогда регистры сохранять? по одному?

Да.
Добавлено спустя 3 минуты, 52 секунды
Простите, вопрос лично для себя: вы какого уровня программисты - Ява и проч. или С/С++ или ниже?
Просто если последнее, то думаю знание английского и чтение мануалов интела и амд обязательно, ещё ссылочка интересная http://en.wikipedia.org/wiki/X86-64

_________________
enthusiast


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
asmfan С++. Одно время увлекался асмом (давно было, еще под дос, под винду совсем чуть чуть) но профессионально на асме писать не приходилось.

Вообще тема заинтересовала. Нагуглил вот статейку http://www.xakep.ru/magazine/xa/083/118/1.asp
Действительно, есть новые фишки, раньше API через стек вызывались, теперь через регистры, однако как я понял это относитьтся именно к API функциям, свои функции можно писать как угодно. А рекурсивную функцию например вообще невозможно написать без сохранения регистров в стек, так что PUSHA/POPA пригодились бы :)


 

Member
Статус: Не в сети
Регистрация: 05.12.2006
Откуда: Из-за компутера
Ещё: на рсдн есть хорошая статья про программирование под 64бит. А вообще можно писать переносимый код на С/С++ зная некоторые особеннсти прогр-я не заморачиваясь на внутреннем представлении кода и конвенциях вызовов. Просто компилеры умные однако пошли )
А неоднозначности как в теме данной ветки нет, 64 бит для 64 бит ОС.

_________________
enthusiast


 

Автор
Статус: Не в сети
Регистрация: 30.04.2008
Winwars писал(а):
Ещё год-полтора - и 4 гига станут не просто нормой - необходимостью

Вот уж поскорей бы - может хоть висту 64 нормально поддерживать начнет Майкрософт, чтоб дрова для всего были и все под нее работало) Здесь мы опять имеем дело с перекосом прогресса - 64битность уже есть - но нужды в ней ПОКА нет! Когда будет - все заработает, дело времени)


 

Member
Статус: Не в сети
Регистрация: 18.01.2007
Afx писал(а):
З.ы. че за игра СЯ? Можно ссылку?

Вот здесь есть и обзоры и много другой полезной информации: http://tanksim.org.ru.sixxs.org/

Дискуссия становится крайне интересной и противоречивой.
Давайте, для наглядности, разберем следующий конретный пример из моего диалога:

-AG-
Цитата:
Насчет полигона 2 х 2 - так можно будет и снять со временем это ограничение. Я ведь так понимаю, что оно тоже не обязательное, а связано с общим ограничением производительности и текущим масштабом миссий?

Andrey12345
Цитата:
Нет, потому что 4х4 - следующий размер, не получится по техническим причинам на 32 разрядной ОС (на движке С.Я. естественно)

-AG-
Цитата:
Вот это очень печально. Ведь уже широко распространены 64 разрядные ОС.

Andrey12345
Цитата:
Пример из С.Я. и ее потенциальной доработки в стиле -AG- :
1) полигон размером 2х2 км + 1 км по краю тайлом
2) полигон 4х4 "честный"
дискретизация высот по горизонтали 1метр в двух случаях
При дальности видимости 3 км (и промахе проверки видимости на эту дальность) нам нужно в первом случае выбрать 2 тысячи высот, а во втором 3 тысячи, что потенциально делает трассировку во (2) случае в непредсказуемое количество раз медленнее чем в первом (если высоты не попали в кеш) и вероятность этого события на треть выше.
И скорость ядра на котором выполняются вычисления (в разумных пределах) не будет играть особенной роли.

А широко ли распространены компьютеры с больше чем 2Гб ОЗУ? А тем более больше 3,5?
А так, 64 бита дают замедление, т.к. память расходуется сильнее -> статистика попаданий в кеш хуже

Цитата:
"Упирание в память" не в ПСП измеряется, при произвольном доступе (который нас интересует)

Цитата:
А зачем сейчас 64 битные ОС нужны кому-то за исключением специализированных областей деятельности?

-AG-
Цитата:
Наверно затем, чтобы полигоны 4х4 работали. А если серьезно, то игровая индустирия давно уже должна была перейти на 64-бит, чем поспособствовать скорейшему внедрению этого формата в быту. Все для этого уже есть - и железо и оси, ждем только геймдевелоперов
.
Andrey12345
Цитата:
С какой целью?
Вас не пугает что почему-то никто особо не торопится, может Вы чего-то не понимаете?

-AG-
Цитата:
Пугает как раз . Уже неоднократно в специализированной прессе программную индустрию упрекали в торможении перехода на 64-бит. Игры, так несравненно выиграют от этого перехода. Одно снятие ограничений на объем памяти сулит большие выгоды (как вы и сами признаете).

Andrey12345
Цитата:
Вы заботитесь о благосостоянии производителей процессоров и операционных систем

Цитата:
Наоборот, тормозить будет больше, толку ноль.

-AG-
Цитата:
Хм... вы считаете 32-битные системы и приложения более эффективными и перспективными, чем 64-битные??

Andrey12345
Цитата:
На данный момент более эффективными по ряду причин.
Может кто-то хочет заработать денег побыстрее, а на 32 битных системах уже лет 10 ничего нового не придумывается
P.P.S Может будет интересно,вполне вероятно, что в следующих наших проектах ландшафт будет 6х6 км без тайла с терраморфингом, возможно с гор. дискретизацией 0,5 метров... На 32 битной системе при затратах памяти соизмеримых с технологией С.Я. (2х2 км, гор. дискрета 1 метр)


 

Member
Статус: Не в сети
Регистрация: 02.02.2008
Откуда: Ростов-на-Дону
Фото: 3
Afx писал(а):
но есть другие режимы (чем то похоже на сегментную адресацию в DOS), в которых доступный объем памяти исчисляется терабайтами. Но используется он крайне редко, т.к. хуже с т.з. производительности (где то на 30% снижается скорость), да и для программиста гемморнее (с ужасом вспоминаю свой опыт программирования с досовским ассемблером и ацкий гемор с сегментной адресацией)

Нет, сегментная адресация по факту в Windows не используется - все сегменты наложены друг на друга. Хотя, конечно, операции, скажем, с адресами cs:epi и ds:esi, даже если им соответствует один и тот же линейный адрес, могут закончится не одинаково (например, нельзя писать в сегмент кода). Использовать больше 4Гб памяти позволяют 36 разрядная адресация, для этого необходимо включить режим PAE. В Windows это можно сделать через AWE API. Одновременно нельзя пользоваться всей памятью - в каждый момент доступно только 4Гб памяти (в режиме ядра есстественно). При проецировании окна на другую область памяти, составляются новый каталог страниц и новые таблицы страниц (что приводит к сбросы TLB кэша, кстати). Ну и не терабайты, конечно, а всего-то навсего 64 ГБ.
DenisMak писал(а):
ты с прерываниями путаешь... хотя да была вроде команда все регистры сохранить в стеке и брать... но они именно для прерываний на сколько помню

Правильно для прерываний, но не забываем, что есть такое системный вызов. Программа для Windows это ОГРОМНОЕ количество системных вызовов и при каждом необходимо много чего сохранять. Вообще, не сохранять РОН можно только если ты один пишешь программу (и то не стоило бы), а если один программист пишет функцию, а другой её вызывает, то как тут можно не сохранять? Не изучать же прогаммистам полностью код друг друга. То же самое и при использовании языков высокого уровня. Скажем если код подгружается динамически из DLL-ки, как тут можно узнать, нужно сохранять регистры или нет? Да даже если всё статически скомпилировано, сомнительно что у компилятора хватит мозгов проанализировать вызывающий код и код функции и сделать оптимизацию - это уже фантастика...
Добавлено спустя 19 минут, 38 секунд
asmfan писал(а):
Скорость набирается за счёт конвенции вызовов в 64 битах - стек приложения приблизительно постоянен всегда, как неплавающий буфер, т.е. не приходится перемещать указатель стека и выделять новую память.

Не очень понятен сей момент. При каждом вызове в стеке должен создаваться новый фрейм (хотя бы с точкой возврата), как же указатель стека может не перемещаться? Сама область отведённая под стек постоянна, но вершина стека не может оставаться постоянной иначе это не стек. Вообщем, не понял о чём вы...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 82 • Страница 3 из 5<  1  2  3  4  5  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan