Введение

В инженерной области аппаратная архитектура относится к идентификации физических компонентов системы и их взаимосвязей. Это описание, часто называемое моделью аппаратного проектирования, позволяет разработчикам аппаратного обеспечения понять, как их компоненты вписываются в архитектуру системы, и предоставляет разработчикам программного обеспечения важную информацию, необходимую для разработки и интеграции программного обеспечения. Четкое определение аппаратной архитектуры позволяет различным традиционным инженерным дисциплинам (например, электротехнике и машиностроению) более эффективно взаимодействовать при разработке и производстве новых машин, устройств и компонентов. Термин "аппаратное обеспечение" также используется в компьютерной индустрии для четкого разграничения аппаратного обеспечения (электронных компьютеров) и программного обеспечения, работающего на нем. Однако в областях автоматизации и разработки программного обеспечения аппаратное обеспечение не обязательно должно быть компьютером в традиционном понимании. Современный автомобиль управляется гораздо большим объемом программного обеспечения, чем космический корабль "Аполлон". Кроме того, современные самолеты не могут функционировать без выполнения десятков миллионов компьютерных инструкций, встроенных и распределенных по всему самолету и размещенных как в стандартном компьютерном оборудовании, так и в специализированных аппаратных компонентах, таких как интегральные схемы с логическими элементами, аналоговые и гибридные устройства, а также другие цифровые компоненты. Важность эффективного моделирования объединения отдельных физических компонентов в сложные системы проявляется в широком спектре приложений, включая компьютеры, персональные цифровые помощники (PDA), мобильные телефоны, хирургические инструменты, спутники и подводные лодки. Аппаратная архитектура – это представление спроектированной (или проектируемой) электронной или электромеханической аппаратной системы, а также процесс и дисциплина для эффективной реализации проектов для такой системы. Обычно она является частью более крупной интегрированной системы, включающей информацию, программное обеспечение и прототипирование устройств. Это представление, поскольку оно используется для передачи информации об элементах, составляющих аппаратную систему, об их взаимосвязях и о правилах, регулирующих эти взаимосвязи. Это процесс, поскольку для создания или изменения архитектуры и/или проекта аппаратной системы в рамках заданных ограничений предусмотрена последовательность шагов. Это дисциплина, поскольку совокупность знаний используется для информирования специалистов о наиболее эффективном способе проектирования системы в рамках заданных ограничений. Аппаратная архитектура в первую очередь связана с внутренними электрическими (и реже механическими) интерфейсами между компонентами или подсистемами системы, а также с интерфейсом между системой и ее внешней средой, особенно с устройствами, управляемыми пользователем, или с электронными дисплеями, которые пользователь видит. (Этот последний, специализированный интерфейс известен как интерфейс "компьютер-человек", также известный как человеко-компьютерный интерфейс или HCI; ранее назывался интерфейсом "человек-машина".) Разработчики интегральных схем внедряют современные технологии в инновационные подходы к созданию новых продуктов. Следовательно, предлагается создание многослойных активных устройств на одном чипе, что открывает возможности для революционных микроэлектронных, оптоэлектронных и новых микроэлектромеханических аппаратных решений.

Предыстория

До появления цифровых компьютеров термины "система" и "аппаратное обеспечение" в электронике и других инженерных дисциплинах использовались так же, как и сегодня. Однако с появлением цифровых компьютеров и развитием программной инженерии как отдельной области, часто возникала необходимость различать созданные аппаратные средства, программные продукты и их комбинацию. Программируемое аппаратное средство, или машина, без компьютерной программы бесполезно; равно как и программный продукт, или программа, не может быть использована для изменения последовательных состояний подходящей (аппаратной) машины. Однако аппаратная машина и ее программирование могут быть спроектированы для выполнения практически неограниченного числа абстрактных и физических задач. В компьютерной и программной инженерии (и часто в других инженерных дисциплинах, таких как связь), термины "аппаратное обеспечение", "программное обеспечение" и "система" стали использоваться для обозначения аппаратного обеспечения, выполняющего компьютерную программу, самого программного обеспечения и аппаратного устройства, оснащенного программой. Аппаратное обеспечение может управляться программным обеспечением с помощью промежуточного устройства, называемого аппаратным контроллером. Этот контроллер может использоваться для выполнения различных автоматизированных задач с аппаратным обеспечением, и обычно состоит из выводов общего назначения (GPIO), поведение которых контролируется кодом. Инженер или архитектор аппаратного обеспечения занимается (в основном) исключительно аппаратным устройством; инженер или архитектор программного обеспечения – (в основном) исключительно программой; а инженер или архитектор систем отвечает за то, чтобы программа могла правильно работать на аппаратном устройстве, и чтобы система, состоящая из этих двух компонентов, могла правильно взаимодействовать с внешней средой, особенно с пользователем, и выполнять свою заданную функцию. Таким образом, архитектура аппаратного обеспечения – это абстрактное представление электронного или электромеханического устройства, способного выполнять фиксированную или изменяемую программу. Архитектура аппаратного обеспечения обычно включает в себя аналоговый, цифровой или гибридный электронный компьютер, а также электронные и механические датчики и исполнительные механизмы. Проектирование аппаратного обеспечения можно рассматривать как "схему разбиения" или алгоритм, который учитывает все текущие и прогнозируемые требования системы и организует необходимые аппаратные компоненты в работоспособный набор четко определенных подсистем, содержащих не более деталей, чем необходимо. То есть, это схема разбиения, которая является исключительной, всеобъемлющей и исчерпывающей. Основная цель разбиения – расположить элементы в аппаратных подсистемах таким образом, чтобы между ними требовалось минимальное количество электрических соединений и электронных коммуникаций. Как в программном, так и в аппаратном обеспечении, хорошо спроектированная подсистема обычно рассматривается как значимый "объект". Более того, четкое распределение требований пользователя по архитектуре (аппаратной и программной) обеспечивает эффективную основу для валидационных тестов требований пользователя в готовой системе.