OSDev

для всех
Текущее время: 28 апр 2024, 07:13

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: сопроцессоры и программинг
СообщениеДобавлено: 09 авг 2013, 23:18 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
в процессоре intel присудствует большое количество дополнений, таких как fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts ttp tm stc.

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

вот в связи с этим хотелось обсуди это всё дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сопроцессоры и программинг
СообщениеДобавлено: 10 авг 2013, 00:08 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Трудно всё это дело программировать на Ассемблере. Многие вещи автоматом задействуется компилятором Cи, поэтому задумываться об этом не приходится. Программинг всяких фич в общем-то собирается здесь http://ru.osdev.wikia.com , а форум это форум, это не то.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сопроцессоры и программинг
СообщениеДобавлено: 10 авг 2013, 07:43 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Сопроцессоры были во времена 8086-80486. Когда FPU был отдельной микросхемой. А после он был встроен в процессор и объединен.

Цитата:
в процессоре intel присудствует большое количество дополнений, таких как

fpu mmx sse sse2 mmxext
Это просто набор инструкций. Описания инструкций приведены во втором томе 2 мануала интела.
3dnowext 3dnow
Это набор расширений AMD, то они их вставляют то убирают.
fpu - описан везде где только можно.
mmx sse sse2 mmxext 3dnowext 3dnow - созданы для ускорения выполнения операций. Ускорение достигаеться за счёт параллельной работы над пакетом данных. Пакет может быть 4 слова или 2 двойных слова. Целый или плавающие. Не вижу чего тут можно обсуждать.
Примеров в интернете полно.
Разве что как все эти регистры сохранить в контексте процесса. Да такого примера что-то не видел, но там одна инструкция и цикл.

syscall - команда специфичная и у AMD и Intel работает по разному. Примеры вызова приведены в документации на процессор. Описан везде где можно, стоит только поискать.
cmov - просто набор команд. Можно использовать смело даже не проверяя расширения так как эти инструкциии все процессоры поддерживают начиная со времен царя гороха Pentium Pro, описан везде. Нужна только для разработчика компилятора.
clflush - вот тут согласен пример за чем эта команда нужна не помешает.
lahf_lm - просто старая команда загрузки половины регистра флагов, скорее просто косяк разработчиков чем нужная команда.

pae, pat,pse, pse36 - различные форматы каталога страниц собственно больше тут говорить нечего документации достаточно глянуть описание а дальше пользуйся.

tsc - счётчик тактов просто счётчик читаешь для замера скорости. Из нюансов на разных ядрах разные счётчики и время может отличаться.

cx8 - добавили регистр надо посмотреть что там если не ошибаюсь то что-то для виртуализации. Тут маленьким примером не отделаешься. Тут целая система. Но да есть и такие.

apic- примеров мало. Но документацию мало по малу перевели в wiki.

msr - набор регистров. По сути 2 команды считать регистр записать. А так как регистры эти зависят от модели, то надо смотреть конкретику. Примеров чтения температуры процессора пруд пруди.

vme - виртуализация x86, примеры в сети есть. Но мне она не понравилась я решил от неё отказаться.
mtrr - вот тут не плохо бы статейку. А то честно описания нет а термины какие-то специфичные. Один лео эти термины понимает.
fxsr fxsr_opt - инструкции для сохранения регистров MMX, XMM и последующих
tm - наличие датчика температуры. На sf.net полно программ которые кажут температуру.

mce, mca чисто аппаратные вещи. Определяют внутренние ошибки. Насколько помню ни на что не влияют. По крайней мере интереса они у меня никакого не вызвали.

lm - Long Mode 64 битное расширение. Книги уже есть в том числе и как переключаться.

nx - запрет на исполнение страницы. Ну не знаю зачем это нужно.


de
sep
pge
up
pni
ts
ttp
stc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сопроцессоры и программинг
СообщениеДобавлено: 10 авг 2013, 11:40 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
Himik писал(а):
Трудно всё это дело программировать на Ассемблере. Многие вещи автоматом задействуется компилятором Cи, поэтому задумываться об этом не приходится. Программинг всяких фич в общем-то собирается здесь http://ru.osdev.wikia.com , а форум это форум, это не то.

в разных процессорах присутствуют разные дополнения, различные сопроцессоры обладают различной коммандной моделью,
какой бы там ни был компилятор использовать сопроцессоры или дополситильные "фичи" он будет тольно если для него это указать,
для разработки OS это имеет не малое значение, это значительным образом связано с функциональностью и безопасностью OS,
в современных OS сопроцессоринг заменён сервисами и предоставлена возможность использовать сопроцессовы (естественно о безопасности заботится OS)
к примеру функционал 3D графики может на себя взять OS(DirectX OpenGL), виртуализацию машины берёт на себя KVM(в виндовсе не знаю что),

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сопроцессоры и программинг
СообщениеДобавлено: 10 авг 2013, 12:07 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
pavia писал(а):
msr - набор регистров. По сути 2 команды считать регистр записать. А так как регистры эти зависят от модели, то надо смотреть конкретику. Примеров чтения температуры процессора пруд пруди.


Вообще говоря, к этим регистрам лучше не лезть -- на то они и моделезависимые. Через них, например, задаётся частота работы процессора и т.д. Температура считывается тоже через них, но это безопасно делать лишь для тех моделей процессоров, для которых соответствующие регистры описаны (т.е. нельзя предполагать, что, если в модели 1234 используются некие регистры, то и в модели 5678 будут использовать те же регистры).

Цитата:
mtrr - вот тут не плохо бы статейку. А то честно описания нет а термины какие-то специфичные. Один лео эти термины понимает.


Если не изменяет память, эти регистры задают диапазоны физической памяти? Если да, то там ничего такого уж сложного нет -- просто для лёгкого понимания надо знать, как работает компутер в комплексе.

Цитата:
mce, mca чисто аппаратные вещи. Определяют внутренние ошибки. Насколько помню ни на что не влияют. По крайней мере интереса они у меня никакого не вызвали.


Достаточно отлавливать прерывание по ошибке и вешать проц, по большому счёту. В ИА-32, как и в подавляющем большинстве архитектур, всё равно не гарантируется возможность правильной работы программы после аппаратного сбоя процессора, а значит, и особо обрабатывать смысла нет. Вот на мэйнфреймах гарантируется либо возможность продолжения работы, либо точное указание, что продолжение невозможно, и там оси заморачиваются анализом аппаратных сбоев...

Цитата:
nx - запрет на исполнение страницы. Ну не знаю зачем это нужно.


Костыль для предотвращения выполнения данных из-за переполнения стека или ещё чего. В общем, подпорка под защиту от всяких там вирусов, пользующихся кривым кодом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сопроцессоры и программинг
СообщениеДобавлено: 10 авг 2013, 14:47 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
pavia писал(а):
syscall - команда специфичная и у AMD и Intel работает по разному. Примеры вызова приведены в документации на процессор. Описан везде где можно, стоит только поискать.

Не знаю как было в 32-битном режиме, а в 64-битном эта команда работает одинаково на AMD и Intel процессорах.
В VME тоже ни чего плохого нет, оно позволяет выполняться многим инструкциям 8086 без генерации исключений.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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