Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 19:30   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Подмигивание Конвейерный и последовательный режим

Цель: ознакомить студентов с основами конвейерной обработки команд микропроцессора и выполнить сравнение эффективности функционирования центрального процессора в конвейерном и последовательном режимах.

Вариант 10. Типы команд: вычитание, сдвиг справа. Размер блока команд: 100, 200, 300.
И еще сказал препод что все нужно нужно написать в отдедьных функциях на С++.

Ну например вычитывание в конвеерном режиме так это нужно делать с помощью массива?
И что значит размер блока команд?? Типа количество операций вычитывания?

Извините что нагрузила вопросами, просто в нас была токо одна пара а обьясняли плохо
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 16.09.2009, 03:21   #2
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Вообще-то, насколько мне известно, все(или почти все) современные микропроцессоры работают в конвейерном режиме, хочешь ты того или нет. Просто они так устроены...
megachuhancer вне форума Ответить с цитированием
Старый 16.09.2009, 08:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а обьясняли плохо
Да многоие преподы эт любят... А методички какие то есть? Пошаговки с примерами давали? Ссылки на литературу?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2009, 08:55   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от megachuhancer Посмотреть сообщение
Вообще-то, насколько мне известно, все(или почти все) современные микропроцессоры работают в конвейерном режиме, хочешь ты того или нет. Просто они так устроены...
Ну точно не помню, но кажись проц можно заставить работать и по-человечески. Не знаю как сейчас, а раньше mmx инструкции выполнялись на аппаратной части математического сопроцессора. И если эти операции чередовать, то конвейер тут никак не шел. Но повторюсь так было раньше, с современной архитектурой может быть иначе. Ну и так можно заставить его не параллелиться. Для этого группируйте операции с одним регистром в одну кучу, затем работа со следующим регистром и т.п. Операции будут выполнять последовательно если не зависят друг от друга, а если зависят, то не будут . Ну делайте условные переходы вместо безусловных (кажись, тоже не всегда прокатывает).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 16.09.2009 в 09:04.
Utkin вне форума Ответить с цитированием
Старый 16.09.2009, 14:07   #5
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Цитата:
Для этого группируйте операции с одним регистром в одну кучу, затем работа со следующим регистром и т.п. Операции будут выполнять последовательно если не зависят друг от друга, а если зависят, то не будут . Ну делайте условные переходы вместо безусловных (кажись, тоже не всегда прокатывает).
Это уж какая-то антиоптимизация получается. Нужно ещё стараться, чтоб медленнее работало
megachuhancer вне форума Ответить с цитированием
Старый 16.09.2009, 15:42   #6
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Сейчас точно все процессоры работают по принципу конвейера. Это началось, если я не ошибаюсь, с процессора i486:
Конвейер - устройство, реализующее такой метод обработки команд внутри микропроцессора, при котором исполнение команд разбивается на несколько этапов:
1. Выборка команд из кэш памяти или ОЗУ
2. Декодирование команды
3. Генерация адреса, при которой определяются адреса операндов в памяти
4. Выполнение операции
5. Запись результата.

Теперь по человечески:
Команда, после ее выборки из памяти попадает в блок декодирования команды, а блок выборки свободен для следующей команды (что он собственно и делает). И так для каждого пункта. Получается, что в процессоре находятся не одна, а сразу пять команд. Если учесть что:
1. процессору быстрее выбирать команды из своего кэша а не из оперативки
2. Все эти пять пунктов не зависят друг от друга (выполняются одновременно)
то налицо увеличение производительности.

Вот как-то так))
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 16.09.2009, 15:56   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
Сейчас точно все процессоры работают по принципу конвейера. Это началось, если я не ошибаюсь, с процессора i486:
Конвейер - устройство, реализующее такой метод обработки команд внутри микропроцессора, при котором исполнение команд разбивается на несколько этапов:
1. Выборка команд из кэш памяти или ОЗУ
2. Декодирование команды
3. Генерация адреса, при которой определяются адреса операндов в памяти
4. Выполнение операции
5. Запись результата.

Теперь по человечески:
Команда, после ее выборки из памяти попадает в блок декодирования команды, а блок выборки свободен для следующей команды (что он собственно и делает). И так для каждого пункта. Получается, что в процессоре находятся не одна, а сразу пять команд. Если учесть что:
1. процессору быстрее выбирать команды из своего кэша а не из оперативки
2. Все эти пять пунктов не зависят друг от друга (выполняются одновременно)
то налицо увеличение производительности.

Вот как-то так))
Нефига не так.
Смотри вот первая операция устанавливает флаг (а может например и не установить - скажем перенос). А вторая операция условный переход в случае если установлен перенос. В таком случае весь твой конвейр идет лесом и ждет пока не выполнятся обе команды поочереди. Какую операцию загружать следующей? Та что следом за условным переходом или осуществлять переход? И случай совсем не экзотический (и я бы даже сказал классический).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.09.2009, 15:59   #8
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
В таком случае весь твой конвейр идет лесом и ждет пока не выполнятся обе команды поочереди. Какую операцию загружать следующей? Та что следом за условным переходом или осуществлять переход?
А вот и нет. Для этого в микропроцесорах предусмотрено устройство предсказания переходов (или как оно называется).
_________________________
Вот нашел. Называется: "Предсказание правильного адреса перехода"
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 16.09.2009, 16:01   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
А вот и нет. Для этого в микропроцесорах предусмотрено устройство предсказания переходов (или как оно называется).
Я знаю его, но оно тоже не стопроцентная панацея. Внимательно прочти мой предыдущий пост и поймешь почему. В таком случае все зависит от содержимого регистров (скажем если сложение то двух, а если инкремент то одного) и лесом товарищи, лесом.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.09.2009, 16:06   #10
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Ну лесом так лесом.)))
Но мы отвлекаемся. Давайте разберемся, что толком требует от нас условие?

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

Последний раз редактировалось SuperVisor; 16.09.2009 в 16:09.
Impuls1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
последовательный поиск по базе bosston БД в Delphi 21 26.06.2009 14:43
Edit. Последовательный переход... MoonLit Общие вопросы Delphi 22 13.02.2008 20:57
Последовательный порт RS-232 LepihinMS Общие вопросы Delphi 4 23.06.2007 00:53
Последовательный порт? Lexx Общие вопросы Delphi 4 10.05.2007 10:50
Последовательный поиск в БД Nowichok БД в Delphi 7 10.02.2007 21:55