Вопросы о процессорах X86 - PullRequest
1 голос
/ 29 марта 2011

У меня два вопроса о процессорах X86.

Первое: что такое SSE? Для чего это? Это архитектура CISC? Должен ли программист, который не программирует на ассемблере и не программирует компиляторы, изучать SSE?

Второе: 64-битные процессоры поддерживают 32-битные процессоры. Если 64-разрядные процессоры заменяют 32-разрядные процессоры, должны ли программисты компилировать приложение, которое использует менее 2 ГБ ОЗУ для 32-разрядных систем? 32-битное приложение использует меньше памяти, а его двоичные файлы меньше. ОС должна хранить разделяемые библиотеки как для 32, так и для 64 бит, и это может быть проблемой.

Спасибо

Ответы [ 4 ]

1 голос
/ 29 марта 2011
  1. Вы можете прочитать о SSE здесь . По правде говоря, вам, вероятно, не нужно ничего знать об этом, если вы не работаете в ASM или не занимаетесь мультимедийными вещами (и даже тогда, вероятно, лучше, если вы позволите вашему компилятору выполнить оптимизацию за вас).

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

1 голос
/ 29 марта 2011

SSE - это реализация компанией Intel нескольких данных. Выполнение одной и той же операции с несколькими значениями одновременно для ускорения процесса. Если вы выполняете какую-то сложную работу по численному вычислению, особенно обработке изображений, возможно, стоит взглянуть на нее - хотя библиотеки, вероятно, уже делают это, и для реальной отдачи вы бы изучили Cuda / openCL.

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

0 голосов
/ 29 марта 2011

[Хех, отвечая на этот вопрос, он был перенесен в суперпользователя, , затем удален, и теперь он, похоже, волшебным образом вернулся сюда. Третья попытка - это очарование!]

Я не очень разбираюсь в SSE, но это механизм для работы с несколькими наборами данных параллельно за такт. (Старые чипы оставляли удивительное количество простоя кремния за цикл; чипы лучше выполняли несколько инструкций за цикл самостоятельно, но это требовало изрядного количества догадок и полностью проваливалось в некоторых алгоритмах с большим объемом данных.) Поэтому SSE требует страница из старых систем SIMD , которая позволяла выполнять одни и те же команды для нескольких частей данных. Время установки могло бы занять больше времени, но в долгосрочной перспективе лот было выполнено.

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

Что касается выполнения 32-битных процессов в 64-битных процессах для экономии памяти, это реальная возможность. Но когда AMD впервые представила набор инструкций x86-64, они очень осторожно указывали на новые инструкции и дополнительные регистры, которые могли бы повысить производительность при выполнении задач, для которых не хватало адресного пространства или выполнялись многие 64-битные арифметические операции. Они отметили, что большинство людей, вероятно, хотели бы, чтобы большая часть кода выполнялась в 64-битном режиме, но увеличение производительности в большинстве случаев было бы незначительным.

Таким образом, за исключением Firefox и Flash, 64-битная версия является повсеместной, и расширение памяти за счет более крупных указателей не кажется большой проблемой.

0 голосов
/ 29 марта 2011

SSE - это расширение архитектуры x86, предназначенное для поддержки мультимедиа. Больше информации можно найти http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions.

Есть много споров по поводу вашего второго вопроса. Здесь я говорю только о Intel 32 и 64-битной платформе. Функционально, если программа никогда не использует более 2 ГБ памяти, разницы не должно быть. Тем не менее, компиляция для 64-битной может создать различные профили производительности. Например, размер указателя больше на 64-битной платформе, что приводит к увеличению размера программы. Чтобы устранить этот 64-битный недостаток, 64-битная платформа имеет больше регистров, которые могут ускорить выполнение вашей программы. Здесь сложный компромисс. Будет интересно посмотреть, что думают другие.

...