Какой жизненный цикл процессора

Обновлено: 07.07.2024

Жизненный цикл разработки ПО (англ. SDLC – Software development lifecycle) – это серия из шести фаз, через которые проходит любая программная система.

Абсолютно любое ПО проходит через 6 основных шагов, начиная от простой идеи и заканчивая использованием её конечным пользователем.

Но как это выглядит изнутри? С какими сложностями сталкивается команда разработчиков и как их решает на каждой фазе Жизненного Цикла ПО? Об этом расскажет Павел Гапонов, Project Manager компании-разработчика SolveIt.

Типичный жизненный цикл разработки состоит из следующих фаз:

1. Сбор и анализ требований (Planning and Requirement Analysis)

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

Дополнительно идет планирование требований по обеспечению качества и выявления различных рисков, связанных с проектом. Результатом анализа является определение различных технических подходов, которые можно использовать для успешной реализации проекта с минимальными рисками. Планируйте то, что вы можете контролировать, и помните о вещах, планировать которые вы не сможете. Это поможет вам получить прочную основу для перехода ко второму этапу.

Проблема: Не соответствующие ожидания и часто изменяющиеся требования: заказчик и команда не понимают, какую реально пользу принесёт продукт.

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

2. Документирование требований (Defining Requirements)

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

Важно четко определить и прописать, что требуется выполнить, это делается с помощью SRS (Software Requirement Specification). Документ содержит все требования к продукту, которые должны быть спроектированы и разработаны в течение жизненного цикла проекта.

Проблема: Большой многостраничный список требований

Решение: Выяснить высокоуровневые требования и, в ходе разработки и коммуникации с заказчиком, дописывать ТЗ. То есть разработка идет параллельно с Техническим заданием, а в процессе корректируется план.

В SolveIt мы всегда стараемся быть гибкими и подстраиваться под клиента. Работающий продукт важнее исчерпывающей документации.

SRS это ориентир для разработчиков, чтобы предложить лучшую архитектуру для продукта. Обычно предлагается несколько подходов к проектированию архитектуры продукта. Все предложенные подходы документируются в спецификации DDS (Design Document Specification) и выбирается наилучший подход к проектированию. Данный подход очень четко определяет все архитектурные модули продукта, а также его связь с внешними и сторонними модулями.

Проблема: Выбрали неправильную архитектуру.

Решение: Наличие в команде разработчиков опытных лидов, которые смогли бы предложить подходящую архитектуру, на основе своего успешного опыта в схожих проектах.

4. Разработка ПО (Building or Developing the Product)

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

Проблема №1: Слабая коммуникация между командой

Разработчик не интересуется прогрессом проекта, проблемами коллег.

Решение: Daily meetings, 100% вовлеченность, Скрам доска (интерактивность).

Проблема №2: Невыполнимые сроки

Заказчик хочет, чтобы его продукт был готов в ближайшее время. Менеджер проекта пытается объяснить клиенту к чему приведет такая спешка, но этого не достаточно. Клиент ставит невыполнимые дедлайны и не слушает возражения менеджера проекта. В результате, команда разработчиков сдается и пробует закрыть задачи в слишком короткие сроки. Как следствие – критические баги из-за спешки: команда не успевает, качество продукта снижается, клиент не доволен и решает, что виновата команда.

Решение: Менеджер проекта должен стоять на своём и аргументировать дедлайны. Клиент должен понять, что если команда разработчиков будет торопиться, то не реализует часть функционала. Если всё же такой срок реализации критичен для клиента, мы стараемся выявить какие задачи находятся у заказчика в приоритете.

Проблема №3: Добавление не оговоренных фич

99% заказчиков ошибаются именно в этом месте . В ходе разработки клиент отклоняется от оговоренного тз и хочет добавить ещё фич в продукт. В результате вместе с ростом скопа фич, увеличиваются сроки и бюджет на разработку, деньги заканчиваются, а готово только 50% продукта.

Решение: Менеджер проекта должен объяснить клиенту, к чему приведет добавление новых фич в проект, отстаивать свою позицию и держаться SRS. Поэтому так важна вторая фаза Жизненного цикла разработки ПО.

Именно тестирование, в основном, затрагивает все этапы жизненного цикла. Дефекты продукта регистрируются, отслеживаются, исправляются и повторно тестируются. Это происходит до тех пор, пока продукт не достигнет стандартов качества, которые прописаны в SRS. На данном этапе в процесс разработки подключается команда мануальных тестировщиков или автоматизаторы.

Решение: Проводить тестирование параллельно задачам, сразу же по их завершению.

6. Внедрение и поддержка продукта (Deployment in the Market and Maintenance)

Как только продукт протестирован, он выходит в релиз. Иногда внедрение происходит поэтапно, в соответствии с бизнес-стратегией. Продукт сначала может быть выпущен в ограниченном сегменте и протестирован в реальной бизнес-среде, это UAT-тестирование (User Acceptance Testing). Затем, основываясь на отзывах, продукт может быть выпущен как есть, или с предлагаемыми улучшениями. После того, как продукт выпущен на рынок его обслуживание выполняется для существующей клиентской базы, и на этом этапе подключаются Support-команды.

Проблема №1: Отсутствие обратной связи, реальных отзывов потенциальных пользователей продукта.

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

Проблема №2: Слабая инфраструктура проекта на стороне клиента.

Часть заказчиков предпочитают размещать сервера приложений не на Azure, AWS, Google и т.д, а в своей внутренней сети. Команда не может гарантировать стабильную работу, из-за сбоев, которые происходят на стороне клиента.

Решение: Предупредить клиента, о возможных проблемах, предложить решения для их устранения.

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

Если вам нужен качественный продукт, свяжитесь с нами и мы сделаем оценку вашего проекта!

Сегодняшняя тема навеяна новостью, которую растиражировали многие издания, в Qualcomm решили не создавать драйверы для графического процессора в чипсете Qualcomm 800/801, то есть отказались от поддержки Vulkan API. Напомню, что благодаря Vulkan API игры на Android 7 должны стать повеселее и побыстрее. Чипсет Qualcomm 800 появился осенью 2013 года и стал одним из первых в этой серии, затем вышло обновление 801, которое до сих пор с точки зрения производительности остается очень привлекательным для моделей среднего сегмента. В Qualcomm успешно продавали и продают этот чипсет, а отказ от поддержки Android 7 обусловлен во многом маркетинговыми причинами, а не невозможностью включить поддержку этого API. И эти действия Qualcomm вполне логичны с точки зрения производителя чипсетов, более того, другие компании поступают ровно так же, а подчас и того хуже. Но почему они отказываются поддерживать успешные решения, которые имеют потенциал на рынке? Очевидный ответ – если поддерживать старые чипсеты неограниченно долгое время, то это негативно скажется на продажах новых чипсетов, маржа на которых выше. Давайте попробуем разобраться в этой бизнес-модели и посмотреть, что нам продают под видом новых процессоров, как быстро одно поколение сменяет другое.


Пожалуй, лидером по перелицовке старых чипсетов в «новые» является компания MediaTek, которая ежегодно запускает новую линейку чипсетов для моделей разных ценовых групп. Если топовые чипсеты призваны продемонстрировать технологическое лидерство, уровень инженерных решений, но при этом они продаются в небольших количествах и постоянно изменяются, то в среднем ценовом сегменте компания придерживается совсем иной философии. Давайте взглянем на процессор MediaTek MT6735, который был анонсирован в конце 2014 года, а в продуктах массово стал появляться летом 2015 года. Это четырехъядерный чипсет с 4G, поддержкой камер разрешением до 13 мегапикселей. Из-за стоимости этот чипсет в разных вариациях (6735P как один из вариантов), стал одним из самых популярных в нише смартфонов по 45-55 долларов (оптовая цена в Китае).


Изначально все драйверы этого чипсета написаны для Android 5.x, никаких попыток создать поддержку для новых версий Android не предпринималось. С появлением 6-ой версии в MediaTek очень неспешно начали адаптировать драйверы для этого чипсета, одновременно предлагая другие решения для обновленного Android. Фактически MediaTek предложили косметически обновленный 6735 с другим номером и полной совместимостью на аппаратном уровне с предыдущим чипсетом, что позволяло заменять процессоры на плате без каких-либо проблем. Для производителей телефонов это означало следующую штуку – если вы хотите выпустить аппарат на новой версии Android, то будьте добры раскошелиться на новый чипсет, который стоит дороже. Вполне рыночные отношения, так как новый чипсет чуточку быстрее, иногда самую малость, но зато поддерживает новую версию Android, а значит, конечный продукт будет в теории привлекательнее в глазах потребителя.

А что со старым продуктом? Ровным счетом ничего, небольшие производители просто не в состоянии самостоятельно переписать драйверы и проделать работу создателя чипсетов, как результат, их «старые» модели не получают никаких обновлений. Обратите внимание, что на рынке сегодня появляется достаточное количество устройств на Android 5.1, это происходит во второй половине 2016 года, и они не воспринимаются анахронизмом, имеют заметные продажи. И все прекрасно знают, что никаких обновлений Android в них не будет.

Для MediaTek, Qualcomm и других компаний, играющих в этой области, уменьшение жизненного цикла чипсетов – жестокая необходимость, им нужно, чтобы покупали новые продукты. В отсутствие новых версий Android убедить партнеров в том, что им нужно сменить чипсет А на почти такой же Б, практически невозможно, все считают деньги. И невольно появление новых версий Android создает для производителей чипсетов пространство для маневра, когда создание драйверов обусловливает возможность использовать то или иное решение с новой версией ОС.

В чем отличие стратегии Qualcomm от MediaTek? Например, в Qualcomm цикл поддержки топовых чипсетов составляет 2.5-3 года, в то время как в MediaTek это 1-1.5 года. В этом нет ничего плохого или предосудительного, каждая компания ориентируется на своего потребителя, а те уже понимают, что они получают и какие ограничения будут в будущем у чипсетов. С точки зрения R&D поддержка старых чипсетов не так уж сложна, к тому же она стоит немного, основные деньги на разработку уже потрачены. Но это означает, что их нужно продавать с заметным дисконтом, что не всегда выгодно.

Из этого небольшого описания подхода к рынку производителей чипсетов следует одна непреложная истина, в экосистеме Android никогда новейшая версия платформы не будет занимать значимой доли. Посмотрите на доли разных версий Android ниже.


Из этой таблицы следует, что Android 6.0 занимает всего 15% рынка, в то время как Android 5.x – 35.5%. Причина в том, что до сих пор выходят смартфоны на этой версии системы, а их производители даже не планируют обновление до последующих версий. Более того, покупатели таких смартфонов осознают, что они приобретают устройство без каких-либо обновлений в будущем. На рынке Android-смартфонов обновления дают только крупные компании, так называемые А-бренды. Причем вначале обновления появляются для флагманов, затем для флагманов предыдущего сезона и потом уже для других моделей. Для некоторых Б-брендов обновления флагманов крупных компаний дает возможность также представить свои обновления, они без угрызений совести заимствуют чужие наработки, но быть первыми на этом поле они не могут. Энтузиасты зачастую портируют новые версии Android на старые телефоны, но в этом случае надо смириться с тем, что не будет работать множество функций, а стабильность устройства окажется под вопросом.

Ни у Google, ни у производителей железа нет никаких рычагов воздействия на производителей чипсетов, чтобы заставить их выпускать драйверы для старых разработок, хотя технически это возможно и выгодно. Теоретически рынок мог пойти по пути развития, когда не наращивается железная составляющая, а оптимизируются софт и драйвера. Тот же Qualcomm де-факто идет по этому пути в старших моделях, выпуская ревизии успешных чипсетов, которые исправляют как аппаратные, так и программные ошибки. Но и тут есть временной предел, больше трех лет компания этого не делает никогда, если, конечно, мы говорим об устройствах для массового рынка. Специализированные чипсеты для военного применения имеют принципиально иной жизненный цикл, который составляет от пяти лет и зачастую достигает 10-15 лет. За срок жизни таких процессоров они получают ежегодно обновления драйверов и софта, что в конечном итоге повышает их энергоэффективность, скорость работы, из железа выжимают все возможное. Это полная противоположность тому, что творится на обычном, массовом рынке.

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

Никто из производителей не заинтересован в том, чтобы до бесконечности поддерживать старые устройства, тот же Apple с трехлетним циклом обновления создает видимость обновлений, так как на старых моделях новые версии iOS приводят к заметному ухудшению производительности, медленной работе. Но формально вы получаете новый софт. Фактически тормозящий iPhone – это повод обновить его до новой модели и наслаждаться пару лет быстрой работой, пока не появится новая версия iOS, которая де-факто обязательна к установке и она снижает производительность устройства.

Идеального рецепта в этой области нет. Покупатели, причем как частные лица, покупающие электронику, так и производители, закупающие компоненты, очень похожи по поведению, они хотят, чтобы все обновлялось до бесконечности и бесплатно. Но так не бывает в реальной жизни, и поэтому возникают искусственные барьеры. Для каждой компании вопрос в том, как найти золотую середину. С одной стороны, нужно добиться того, чтобы новые фишки были привлекательны и воспринимались как реальное изменение, с другой стороны, пользователи «старых» версий не роптали. Балансирование между возможным и желаемым. К сожалению, создание искусственных барьеров и осознанное старение продуктов с точки зрения софта давно стало нормой для всех без исключения массовых рынков. И с этим точно стоит смириться, ничего иного в ближайшие годы нас не ждет, парадигма не изменится.

В ближайшем будущем Intel снимет с производства больше 30 CPU, среди которых Celeron, Pentium и Core 8000, включая BGA модели и «юбилейный» i7 8086K. Об этом Intel сообщила в опубликованном накануне уведомление об обновлениях (Product Change Notification). Заказать перечисленные ниже процессоры можно купить вплоть до 18 декабря этого года. Их последняя партия будет отгружена 4 июня 2021 года.

Комментарий удален по просьбе пользователя

Гиперпень кстати норм был во времена Kaby Lake

Комментарий удален по просьбе пользователя

Отличный повод поднять на них цены. Особенно на барахолках

У меня до сих пор 2600K стоит (брал компьютер в 2011), думаю, ещё надолго хватит.

Ну если только для хрома с тремя вкладками.

Хз хз, мой фх всё ещё игоры тянет, спустя 8 лет, сейчас рдр 2 на средне высоких с упором в вк прохожу

Ну если только дропы до 40 фпс для тебя приемлемы.

У меня на 2600 дропы только в Сен-Дени были. А так, комфортно для игры на высоких-ультра. Но, конечно, менять уже скоро надо будет.

не понял
4/8 же хватает на всё?

это ж сэндик, там ipc низкий

Есть ряд игр где мой 4790k 4.8 гц задыхается. Как 2600 в том же РДР или Одиссее работает я даже не знаю.

Пффф, у меня щас x3440 коптит на 4,2 ГГц, и норм вполне, проц за 450 рублей тащит не хуже какого-нибудь i5 skylake или kabylake особенно в многопотоке

Ну тип ты такой играешь, у тебя под 100фпс и проц нагружен под сотку, это по твоему задыхается?

Всё вышедшее до 2016 прекрасно играется

2016 был 4 года назад, мань)

Это проблема? Или ты во всё до 2016 года поиграть успел?

2600K стоит . думаю, ещё надолго хватит.

надолго

Всё вышедшее до 2016 прекрасно играется

С логикой нормально все?
Ну и да, играть только в игры 4-летней и больше давности - отстой.

"Ну если только для хрома с тремя вкладками."
А у тебя?
Огромное количество достойных проектов, разгуляться есть где, сомневаюсь, что даже половина пекашников больше 10ти разных игр в год пробует
У меня вообще 2600 обычный и gtx 560 с 2011 стоит, обновляться планирую только осенью, и то, ради 4к 60 фпс.

Спокойно 40+ держит, вот не надо тут

Ну если только дропы до 40 фпс для тебя приемлемы.

Детройт Стань человеком, ремастер КОД МВ2 и Satisfactory тебе в помощь.

Это игры, требовательные к процессору? Если так, то хорошо, что я в них никогда и не собирался играть.

У меня i5 3570к 4х4Ghz. Тоже думал, что еще долго везде будет хватать. Детройт - тупо говнопорт, которому подавай минимум 8 потоков, а лучше ядер и там необоснованный лагодром с первых кадров. Ремастер в паре моментов дает полагать процу. А Satisfactory действительно требовательна и полагивает порой. Особенно когда много заводов и/или когда ты хост на три игрока. Клевая игрушка.
В остальном, тьфу-тьфу пока еще держимся, а DDR5 сука все никак не выйдет, чтобы я мог спокойно обновиться на следующее десятилетие.

Сейчас вряд ли будет застой как был эти годы, так что купленный топ в 2020 может оказаться хламом уже через 3-4 года. Ddr5 вряд ли выйдет раньше чем через 2 года.

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

Старые компьютеры не только вызывают снижение производительности, но и усложняют жизнь пользователя..


Если вы понимаете ключевые этапы жизненного цикла компьютера, вы можете спланировать свое приобретение.

Кроме того, важно определить точку, в которой более нецелесообразно продолжать поддерживать старые технологии..

7 фаз жизненного цикла компьютера

1- Создание

Жизнь аппаратные средства компьютера начинается на плате проекта, в офисах Lenovo, Dell или HP, среди других компаний.

Эти конструкции аппаратные средства они становятся прототипами. После завершения серии сложных испытаний они отправляются в производственную цепочку. Впоследствии они производятся и распространяются для продажи конечному потребителю..

2- Планирование и покупка

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

Затем начинается фаза покупки. На этом этапе обычно запрашивается минимально возможная цена.

3- Реализация

Как только у вас есть новый аппаратные средства, необходимо установить его. Первые шаги - найти место, распаковать его и подключить аппаратные средства нового компьютера.

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

4- Операция

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

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

5- Техническое обслуживание

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

6- Обновление

Обновления аппаратные средства они предполагают замену компонентов на новые. Это увеличивает срок службы компьютера или позволяет ему выполнять новые задачи.

Вы можете заменить внутренние компоненты, такие как RAM. Существует также возможность добавления периферийных элементов, таких как внешние жесткие диски..

Необходимо учитывать, что обновление аппаратные средства Это оправдано, только если стоимость меньше, чем покупка нового компьютера. Кроме того, вы должны продлить срок службы компьютера на разумный период.

7- Снятие

Все компьютеры удалены из срока полезного использования. Согласно исследованию, проведенному компанией Redemtech Inc., средний срок службы ноутбука составляет три года, а настольного компьютера - четыре года..

Этап вывода включает в себя демонтаж компьютера и принятие мер по отказу от аппаратные средства.

Последнее может быть сделано через продажу или переработку. Другой вариант - сохранить машину для дальнейшего использования запасных частей..

Важно помнить, чтобы очистить компьютер от всех важных данных, прежде чем избавляться от его частей.

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

· Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.

· Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

· Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

· Тактовый генератор , или генератор тактовых импульсов, задаёт рабочую частоту процессора.

2.2. Режимы работы процессора.

Процессор архитектуры x86 может работать в одном из пяти режимов и переключаться между ними очень быстро:

1. Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним программным обеспечением (DOS-программами).

2. Защищенный режим (protected mode) — режим, который впервые был реализован в 80286 процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3. Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования программ реального режима, причем дает возможность одновременной работы нескольких таких программ, что в реальном режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной машины, эмулирующей процессор8086. Виртуальная машина формируется программными средствами операционной системы. В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы от работающих DOS-приложений.

4. Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5. Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

При загрузке компьютера процессор всегда находится в реальном режиме, в этом режиме работали первые операционные системы, например MS-DOS, однако современные операционные системы, такие как Windows и Linux переводят процессор в защищенный режим. Вам, наверное, интересно, что защищает процессор в защищенном режиме? В защищенном режиме процессор защищает выполняемые программы в памяти от взаимного влияния (умышленно или по ошибке) друг на друга, что легко может произойти в реальном режиме. Поэтому защищенный режим и назвали защищенным.

2.3. Регистры процессора (программная модель процессора).

Для понимания работы команд ассемблера необходимо четко представлять, как выполняется адресация данных, какие регистры процессора и как могут использоваться при выполнении инструкций. Рассмотрим базовую программную модель процессоров Intel 80386, в которую входят:

· 8 регистров общего назначения, служащих для хранения данных и указателей;

· регистры сегментов — они хранят 6 селекторов сегментов;

· регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

· регистр-указатель EIP выполняемой следующей инструкции процессора;

· система команд (инструкций) процессора;

· режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров - CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, - регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

TF – флаг ловушки. Он был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой программной команды управление временно передается отладчику.

IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF =0 – наоборот.

OF – флаг переполнения. Он устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице, то есть отрицательное, и наоборот.

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

Счётчик команд работает со сверхоперативной памятью, которая находится внутри процессора. Эта память носит название очередь команд, куда помещается одна или несколько команд непосредственно перед их выполнением. То есть в счётчике команд хранится адрес команды в очереди команд, а не адрес оперативной памяти.

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды . Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды . Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов . Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды . АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память . Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

Это упрощённый цикл выполнения команды. К тому же действия могут отличаться в зависимости от процессора. Однако это даёт общее представление о том, как процессор выполняет одну машинную команду, а значит и программу в целом.

Читайте также: