Программное и аппаратное обеспечение: понятие, назначение, уровни, характеристики и настройки.
Компьютер - это сложное устройство, представляющее собой синтез программного и аппаратного обеспечения. Это машина, решающая задачи через исполнение команд, таких как: суммировать два числа, проверить отличается ли число от нуля, скопировать данные из одной ячейки памяти в другую и т.д.
Простые команды составляют язык, называемый машинным, на котором человек может объяснить компьютеру, что нужно сделать. Каждый компьютер, в зависимости от своего назначения, снабжается определенным набором команд. Они создаются примитивными, чтобы упростить производство компьютеров.
Однако машинный язык создает большие проблемы для человека, потому что писать на нем утомительно и крайне сложно. Поэтому инженеры изобрели несколько уровней абстракций, каждый из которых основан на более низком, вплоть до машинного языка и компьютерной логики, а на верхнем уровне располагается взаимодействие с пользователем. Этот принцип называется многоуровневым строением компьютера, и ему подчиняются и аппаратное, и программное обеспечение компьютерных систем.
Многоуровневое строение компьютеров
Как уже было ранее сказано, программное и аппаратное обеспечение выстраивается по принципу уровней абстракций, каждый из которых базируется на предыдущем. Проще говоря, чтобы человеку было легче писать программы, на базе машинного языка создается (а точнее надстраивается) новый язык, который является более понятным для человека, но совершенно неисполнимым компьютером. Тогда как же компьютер выполняет программы на новом языке?
Существует два основных подхода - трансляция и интерпретация. В первом случае каждой команде нового языка соответствует набор команд машинного языка, таким образом, программа на новом языке полностью преобразуется в программу на машинном языке. Во втором случае на машинном языке создается программа, которая в качестве входных данных принимает команды на новом языке, распознает их, переводит в машинный язык и выполняет.
Компьютерное аппаратное и программное обеспечение может содержать множество уровней от самого первого, или базового, до того, который будет понятен человеку. Для иллюстрации этого процесса отлично подходит понятие виртуальной машины. Можно считать, когда компьютер выполняет программу на каком-либо языке (С++, например), то в нем работает виртуальная машина, которая выполняет команды этого языка. Ниже виртуальной машины С++ располагается другая, с более примитивным языком. Например, пусть это будет "Ассемблер". На этом уровне работает виртуальная машина "Ассемблера". А между ними происходит либо трансляция, либо интерпретация программного кода. Таким образом, множество уровней складываются в единую цепочку до самого первого - машинного. Виртуальная машина - это просто концепция, которая позволяет удобнее представить процесс многоуровневости.
Ответим на напрашивающийся вопрос - почему бы не сделать компьютер, который работает напрямую с тем же языком С++?
Дело в том, что создание такой технологии потребует колоссальных вложений в аппаратные средства и программное обеспечение такого компьютера. Это, скорее всего, возможно, но будет так дорого, что перестанет быть целесообразным.
Современные компьютеры
На сегодняшний день компьютеры в своем большинстве состоят из 2-6 уровней. Нулевой уровень - базовый, то есть машинный или аппаратный, на нем работает только машинный код, который исполняется электросхемами компьютера. И на основе их строится язык первого уровня и т.д. Также следует уточнить, что нулевым уровнем все не заканчивается. Ниже него существует технический уровень - самих транзисторов и резисторов, то есть физика твердых тел, он называется физическим. Таким образом, нулевой уровень называется базой, потому что именно здесь встречаются друг с другом аппаратные средства и программное обеспечение.
Наконец, перечислим иерархическую цепочку уровней, которые содержатся в среднестатистическом компьютере, начиная с нулевого:
Ур. 0 - цифровой логический, или аппаратный - здесь работают вентили и регистры, которые способны хранить значения 0 или 1, а также исполнять простые функции "и", "или" и др.
Ур. 1 - микроархитектуры - на этом уровне работает арифметико-логическое устройство компьютера. Здесь данные, аппаратное обеспечение и программное обеспечение начинают совместно работать.
Ур. 2 - архитектуры набора команд.
Ур. 3 - гибридный,или операционной системы - данный уровень отличается большей гибкостью, хотя очень похож на уровень 2. Например, здесь программы могут выполняться параллельно.
Ур. 4 - ассемблера - уровень, на котором машинные цифровые языки начинают уступать место человеческим.
Ур. 5 - языков высокого уровня (C++, Pascal, PHP и пр.)
Итак, каждый уровень представляет собой надстройку над предыдущим и связан с ним методами трансляции или интерпретации, имеет свои абстрактные объекты и операции. Для работы на отдельно взятом уровне можно, в принципе, не знать, что происходит на предыдущих. Именно благодаря такому подходу понимать компьютерную технику стало проще.
Ведь каждая марка компьютеров имеет свою архитектуру. При этом под архитектурой понимаются типы данных, операции и характеристики каждого уровня. Например, технология, по которой созданы ячейки памяти компьютера, не входит в понятие архитектуры.
Развитие компьютеров
С развитием технологий появлялись новые уровни, какие-то уходили. У первых компьютеров в 40-х годах было всего два уровня: цифро-логический, где программа выполнялась, и архитектурно-командный, на котором писался код. Поэтому граница между аппаратной и программной частями была очевидной, но с увеличением количества уровней она стала пропадать.
На сегодняшний день информационное аппаратное и программное обеспечение можно считать тождественными понятиями. Потому что любая операция, моделируемая программно, может быть исполнена напрямую на аппаратном уровне, и наоборот. Нет железных правил, которые гласили бы, почему одна операция должна быть выполнена аппаратно, а другая - программно. Разделение происходит на основании таких факторов, как цена производства, скорость, надежность и т. п. Сегодняшнее ПО может завтра войти в состав аппаратной части или, наоборот, что-то из аппаратной части - стать программой.
Поколения компьютеров
Механические компьютеры представляют нулевое поколение. Паскаль в 1640-х годах создал счетную машину с ручным приводом, которая умела складывать и вычитать. В 1670-х Лейбниц создал машину, которая умела также умножать и делить. Бэббидж в 1830-х, потратив все сбережения, создал аналитическую машину, которая была похожа на современный компьютер и состояла из устройства ввода, памяти, вычислительного аппарата и способа вывода. Машина была столь совершенной, что могла запоминать до 1000 слов по 50 десятичных разрядов и выполнять разные алгоритмы одновременно. Аналитическая машина программировалась на "Ассемблере", поэтому Бэббидж нанял Аду Лавлейс для создания первых программ. Однако ему не хватило как средств, так и технологий, чтобы отладить работу своего детища.
Немногим позже в Америке была создана мощнейшая машина Атанасова, работавшая на двоичной арифметике и имевшая обновляемую память на основе конденсаторов (ОЗУ), которая и по сей день работает также. Атанасов, как и Бэббидж, не смог отладить работу своего творения. Наконец, в 1944 году Айкеном был создан первый компьютер общего назначения Mark I, который мог запоминать 72 слова по 23 десятичных разряда каждое. На момент конструирования Mark II релейные компьютеры уже уходили в прошлое, а на смену им пришли электронные.
Первый компьютер в мире
Вторая мировая война стимулировала работы по созданию вычислительных машин, что повлекло за собой развитие первого поколения (1945-1955) компьютеров. Первым компьютером на электронных лампах была машина Тьюринга COLOSSUS, предназначением которой был взлом шифров ENIGMA. И хотя компьютер опоздал, и война закончилась, а из-за секретности не оказал влияния на мир компьютеров, тем не менее он был первым.
Затем в армии США ученый Моушли начал разработки ENIAC. Первый такой компьютер весил три десятка тонн, состоял из 18000 ламп и 1500 реле, программировался он за счет 6000 переключателей и потреблял огромное количество энергии. Настройка программного и аппаратного обеспечения такого монстра была крайне сложной.
Поэтому, как и COLOSSUS, машина ENIAC не была отлажена к сроку и перестала быть нужной армии. Однако Моушли было позволено создать школу и на базе работы над ENIAC пустить знания в массы, что породило создание множества различных компьютеров (EDSAC, ILLIAC, WEIZAC, EDVAC и т. д.).
Среди всего ряда компьютеров выделился IAS, или фон-неймановская вычислительная машина, которая и по сей день оказывает влияние на компьютеры. Она состояла из памяти, устройства управления и модуля ввода-вывода, могла хранить 4096 слов по 40 бит длиной.
И хотя IAS так и не стал лидером на рынке, но оказал мощнейшее влияние на развитие компьютеров. Например, на его базе был создан Whirlwind I - компьютер для серьезных научных вычислений. В конечном итоге все изыскания привели к тому, что мелкая компания, производитель перфокарт IBM, в 1953 году выпускает компьютер 701 и начинает смещать с лидерских позиций рынка Моушли и его UNIVAC.
Транзисторы и первая компьютерная игра
Сотрудники лаборатории Белла получили Нобелевскую премию 1956 года за изобретение транзисторов, которые мгновенно изменили всю компьютерную технику и дали начало второму поколению (1955-1965) компьютеров. Первый компьютер на транзисторах был TX-0 (TX-2). Он не имел особого веса, но один из создателей, Ольсен, основал компанию DEC, которая выпустила на рынок компьютер PDP-1 в 1961.
И хотя он серьезно уступал по параметрам моделям IBM, но был дешевле. Комплекс аппаратного и программного обеспечения PDP-1 стоил $120 000, а не миллионы, как IBM 7090. PDP-1 был коммерчески успешным продуктом. Считается, он положил начало компьютерной промышленности. Также на нем была создана первая компьютерная игра "космическая война". Позже выйдет PDP-8 с прорывной технологией единой шины данных Omnibus. В 1964 году компания CDC и ученый Крэй выпускает машину 6600, которая на порядок быстрее всех за счет использования параллельных вычислений внутри ЦП.
Первые шаги IBM
Изобретение кремниевой интегральной схемы, которая позволила размещать на одном кристалле десятки транзисторов, положило начало третьему поколению (1965-1980) компьютеров. Они были меньше по размеру и работали быстрее. Здесь нужно отметить компанию IBM, которая первая задалась вопросом совместимости разных компьютеров и начала производить целую серию под названием 360. Программное и аппаратное обеспечение моделей серии 360 различались по параметрам, но снабжались схожим набором команд, благодаря чему они были совместимы. Также машины 360 были способны эмулировать работу других компьютеров, что являлось большим прорывом, так как позволяло запускать программы, написанные под другие машины. Тем временем DEC оставались лидерами рынка мелких компьютеров.
Эпоха создания
ПК Четвертое поколение (1980 - наши дни) - СБИС или сверхбольшие интегральные схемы. Произошел резкий скачок в ИС, и появились технологии, позволяющие на кремниевых кристаллах размещать не десятки, а тысячи транзисторов. Наступили времена персональных компьютеров.
Первые операционные системы CP/M; появление на рынке компании Apple; создание компанией Intel родителя линейки Pentium - процессора 386.
И здесь снова IBM совершает прорыв на рынке, начиная создавать персональные компьютеры из комплектующих разных фирм, вместо того чтобы производить все самостоятельно. Так появляется IBM PC, самый продаваемый компьютер в истории.
Новый подход IBM PC одновременно породил эпоху создания персональных компьютеров, но в то же время навредил компьютерной промышленности в целом. Так, например, Intel вырвался в единоличные лидеры по производству ЦП, и никто не мог с ними соперничать. Выжить смогли лишь узконаправленные компании. Появляется Apple Lisa - первый компьютер, использующий графическую операционную систему. Compaq создает первые портативные компьютеры, занимает нишу на рынке и выкупает бывших лидеров этого сегмента DEC.
Если Intel нанес первый удар по IBM, то вторым стал удар от мелкой компании Microsoft, которая занималась производством ОС для IBM. Первой ОС был MS-DOS, позже Microsoft создал для IBM систему OS/2, а под шумок была создана Windows. OS/2 на рынке провалилась.
Таким образом, Intel и Microsoft свергли IBM. Последние пытаются выжить и генерируют очередную революционную идею, создавая процессор с двумя ядрами. Происходит совершенствование аппаратного и программного обеспечения ПК за счет всевозможных оптимизаций.
Пятое поколение
Но развитие не стоит на месте. Происходит смена парадигмы, и появляются предпосылки 5-го поколения компьютеров. Все началось с японского правительства, которое в 1980-х выделило колоссальные средства национальным компаниям и приказало им изобрести следующее поколение компьютеров. Разумеется, идея провалилась.
Но влияние этого события было большим. Японские технологии стали расползаться по миру. Эта техника заняла лидирующие позиции во многих областях соответствующего рынка: фотоаппараты, аудиооборудование и т.д. Запад не собирался просто так сдаваться и тоже включился в борьбу за 5-е поколение.
Компания Grid Systems выпустила первый планшетный компьютер, а Apple создала карманный Newton. Так появились PDA, или электронные помощники, или карманные компьютеры.
И тут специалисты IBM совершают очередной прорыв и преподносят новую идею - они объединяют набирающие популярность мобильные телефоны с обожаемыми пользователями PDA. Таким образом, в 1993 на свет появляется первый смартфон под названием Simon.
Отчасти 5-м поколением можно считать уменьшение программного и аппаратного обеспечения в размерах. А также тот факт, что сегодня мини-компьютеры встраиваются в любую технику: от смартфонов и электрочайников до автомобилей и рельс поездов - и расширяют ее функциональность. Стоит также отметить шпионские разработки с аппаратной защитой программного обеспечения. Более незаметные, призванные выполнять свои уникальные функции.
Типы компьютеров
Не ограничиваются только аппаратным и программным обеспечением ПК. На сегодняшний день их существует множество:
- одноразовые компьютеры: поздравляющие открытки, RFID;
- микроконтроллеры: часы, игрушки, мед. оборудование и другие приборы;
- мобильные телефоны и ноутбуки;
- персональные компьютеры;
- серверы;
- кластеры (несколько серверов, объединенных в одно целое) мэйнфреймы - компьютеры для пакетной обработки больших объемов данных;
- "облачные технологии" - мэйнфреймы второго порядка;
- суперкомпьютеры (хотя этот класс замещается кластерами, которые способны также выполнять серьезные расчеты).
Учитывая данную информацию, аппаратное и программное обеспечение может быть подстроено под самые разные нужды.
Семейства компьютеров
Аппаратно-программное обеспечение персонального компьютера (и не только его) различается по семействам. Наиболее популярными семействами являются X86, ARM и AVR. Под семейством понимается архитектура набора команд. К первому семейству - X86 - относятся почти все персональные компьютеры и серверы (как на ОС Windows, так и на Linux и даже Mac).
Ко второму - ARM - мобильные системы. Наконец, к третьему - AVR - относится большинство микроконтроллеров, тех самых незаметных компьютеров, которые встраиваются повсюду: в машины, в электроприборы, в телевизоры и пр.
X86 разрабатывается Intel. Их процессоры, начиная от модели 8080 (1974 г.) и до Pentium 4 (2000 г.), обладают обратной совместимостью, то есть новый процессор способен выполнять программы, написанные для старого.
Наследственность аппаратного и программного обеспечения - работа сквозь целые поколения процессоров, что сделало Intel такими универсальными.
Компания Acorn Computer стояла у истоков создания проекта ARM, который позже отделился и стал самостоятельным. Архитектура ARM долгое время пользуется успехом в сегменте рынка, где требуется пониженное энергопотребление.
Компания Atmel наняла двух студентов, у которых была интересная идея. Они, продолжив разработку, создали процессор AVR, который отличается тем, что отлично подходит для систем, которым не требуется высокая производительность. Процессоры AVR укладываются в самые суровые условия, когда стоят жесткие ограничения на размер, энергопотребление и мощность.