Архитектура информационных систем - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

Архитектура информационных систем

Шагиев Р.Р. 1
1БИТИ НИЯУ МИФИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

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

1 ИНТЕГРАЛЬНЫЕ СХЕМЫ

Некоторые производители разрешили микропрограммирование избранным клиентам, которые могли добавить свои пользовательские функции. Это назвали «управляющая память с перезаписью» (writable control store, WCS). Самым известным компьютером WCS стал Alto, который лауреаты премии Тьюринга Чак Такер и Батлер Лэмпсон с коллегами создали для исследовательского центра Xerox Palo Alto в 1973 году. Это был действительно первый персональный компьютер: тут первый дисплей с поэлементным формированием изображений и первая локальная сеть Ethernet. Контроллеры для инновационных дисплея и сетевой карты были микропрограммами, которые хранятся в WCS объёмом 4096 слов по 32 бита.

В 70-е годы процессоры ещё оставались 8-битными (например, Intel 8080) и программировались в основном на ассемблере. Конкуренты добавляли новые инструкции, чтобы превзойти друг друга, показывая свои достижения на примерах ассемблера.

Гордон Мур верил, что следующая ISA от Intel сохранится для компании навсегда, поэтому нанял много умных докторов наук в области информатики и отправил их на новый объект в Портленде, чтобы изобретать следующую великую ISA. Процессор 8800, как Intel первоначально назвала его, стал абсолютно амбициозным проектом компьютерной архитектуры для любой эпохи, безусловно, это был самый агрессивный проект 80-х гг. Он предусматривал 32-битную мандатную адресацию (capability-based addressing), объектно-ориентированную архитектуру, инструкции переменной длины и собственную операционную систему на новом языке программирования Ada.[1]

К сожалению, этот амбициозный проект потребовал несколько лет разработки, что заставило Intel запустить экстренный резервный проект в Санта-Кларе, чтобы быстро выпустить 16-битный процессор в 1979 году. Intel дала новой команде 52 недели на разработку новой ISA «8086», проектирование и сборку чипа. Учитывая плотный график, проектирование ISA заняло всего 10 человеко-недель в течение трёх обычных календарных недель, в основном за счет расширения 8-разрядных регистров и набора инструкций 8080 до 16 бит. Команда завершила 8086 по графику, но этот аварийно сделанный процессор объявили без особых фанфар.

Intel очень повезло, что IBM разрабатывала персональный компьютер для конкуренции с Apple II и нуждалась в 16-битном микропроцессоре. IBM присматривалась к Motorola 68000 с ISA, похожей на IBM 360, но та отставала от агрессивного графика IBM. Вместо этого IBM переключилась на 8-разрядную версию шины 8086. Когда IBM анонсировала PC 12 августа 1981 года, то надеялась продать 250 000 компьютеров к 1986 году. Вместо этого компания продала 100 миллионов по всему миру, подарив очень перспективное будущее экстренно сделанной ISA от Intel.

Оригинальный проект Intel 8800 переименовали в iAPX-432. Его анонсировали в 1981 году, но он требовал нескольких микросхем и имел серьёзные проблемы с производительностью. Его завершили в 1986 году, через год после того, как Intel расширила 16-битную ISA 8086 до 80386, увеличив регистры с 16 бит до 32 бит. Таким образом, предсказание Мура в отношении ISA оказалось правильным, но рынок выбрал сделанный впопыпах 8086, а не «помазанника» iAPX-432. Как поняли архитекторы процессоров Motorola 68000 и iAPX-432, рынок редко умеет проявить терпение.

2 ОТ СЛОЖНОГО К СОКРАЩЕННОМУ НАБОРУ КОМАНД

В начале 1980-х было проведено несколько исследований компьютеров с набором сложных инструкций (CISC): у них большие микропрограммы в большой управляющей памяти. Когда Unix продемонстрировала, что даже операционную систему можно написать на языке высокого уровня, то главным стал вопрос: «Какие инструкции будут генерировать компиляторы?» вместо прежнего «Какой ассемблер будут использовать программисты?» Значительное повышение уровня аппаратно-программного интерфейса создало возможность для инноваций в архитектуре.

Лауреат премии Тьюринга Джон Кокк и его коллеги разработали более простые ISA и компиляторы для миникомпьютеров. В качестве эксперимента они переориентировали свои исследовательские компиляторы на использование в IBM 360 ISA только простых операций между регистрами и загрузки с запоминанием, избегая более сложных инструкций. Они заметили, что программы работают в три раза быстрее, если используют простое подмножество. Эмер и Кларк обнаружили, что 20% инструкций VAX занимают 60% микрокода и занимают всего 0,2% времени выполнения. Один автор этой статьи (Паттерсон) провёл творческий отпуск в DEC, помогая уменьшить количество ошибок в микрокоде VAX. Если производители микропроцессоров собирались в больших компьютерах следовать конструкции ISA с набором сложных команд CISC, то предполагали большое количество ошибок микрокода и хотели найти способ их исправлять. Он написал такую статью, но журнал Computer её отклонил. Рецензенты высказали мнение, что ужасная идея строить микропроцессоры с ISA настолько сложной, что их нужно ремонтировать в полевых условиях. Этот отказ поставил под сомнение ценность CISC для микропроцессоров. По иронии судьбы, современные микропроцессоры CISC действительно включают механизмы восстановления микрокода, но отказ от публикации статьи вдохновил автора на разработку менее сложной ISA для микропроцессоров — компьютеров с сокращённым набором команд (RISC).

Эти замечания и переход на языки высокого уровня позволили перейти от CISC к RISC. Во-первых, инструкции RISC упрощены, так что нет необходимости в интерпретаторе. Инструкции RISC обычно просты как микроинструкции и могут выполняться непосредственно аппаратным обеспечением. Во-вторых, быстрая память, ранее использовавшаяся для интерпретатора микрокода CISC, была перепрофилирована в кэш инструкций RISC (кэш — это небольшая, быстрая память, которая буферизует недавно выполненные инструкции, поскольку такие инструкции, вероятно, будут повторно использованы в ближайшее время). В-третьих, распределители регистров на основе схемы окрашивания графа Грегори Чайтина значительно облегчили компиляторам эффективное использование регистров, от чего выиграли эти ISA с операциями регистр-регистр. Наконец, закон Мура привёл к тому, что в 1980-х годах транзисторов на чипе стало достаточно, чтобы разместить на одном чипе полную 32-битную шину, вместе с кэшами для инструкций и данных.[2]

Например, на рис. 1 показаны микропроцессоры RISC-I и MIPS, разработанные в Калифорнийском университете в Беркли и Стэнфордском университете в 1982 и 1983 годах, которые продемонстрировали преимущества RISC. В итоге, в 1984 году эти процессоры были представлены на ведущей конференции по схемотехнике, IEEE International Solid-State Circuits Conference (1, 2). Это был замечательный момент, когда несколько аспирантов в Беркли и Стэнфорде создали микропроцессоры, превосходившие возможности промышленности той эпохи.

Рисунок 1 - Процессоры RISC-1

Те академические чипы вдохновили многие компании на создание микропроцессоров RISC, которые были самыми быстрыми на протяжении следующих 15 лет.

Инженеры DEC позже показали, что для одной программы более сложные CISC требуют 75% от количества инструкций RISC (первый член в формуле), но в схожей технологии (третий член) каждая инструкция CISC занимает на 5-6 тактов больше (второй член), что делает микропроцессоры RISC примерно в 4 раза быстрее.

3 VLIW, EPIC, ITANIUM

Предполагалось, что следующая инновационная ISA превзойдёт успех и RISC, и CISC. Архитектура очень длинных машинных команд VLIW и её двоюродный брат EPIC (вычисление с явным параллелизмом машинных команд) от Intel и Hewlett-Packard использовали длинные инструкции, каждая из которых состояла из нескольких независимых операций, связанных вместе. Сторонники VLIW и EPIC в то время считали, что если бы одна инструкция могла указать, скажем, шесть независимых операций — две передачи данных, две целочисленные операции и две операции с плавающей запятой — и технология компилятора могла бы эффективно назначать операции в шесть слотов инструкций, то оборудование можно упростить. Подобно подходу RISC, VLIW и EPIC перенесли работу с аппаратного обеспечения на компилятор.[3]

Работая вместе, Intel и Hewlett-Packard разработали 64-разрядный процессор на идеях EPIC для замены 32-разрядной архитектуры x86. Большие надежды возлагались на первый процессор EPIC под названием Itanium, но реальность не соответствовала ранним заявлениям разработчиков. Хотя подход EPIC хорошо работал для высокоструктурированных программ с плавающей запятой, он никак не мог достичь высокой производительности для целочисленных программ с менее предсказуемыми ветвлениями и кэш-промахами. Как позже отметил Дональд Кнут: «Предполагалось, что подход Itanium… будет потрясающим — пока не оказалось, что желаемые компиляторы в принципе невозможно написать». Критики отметили задержки в выпуске Itanium и окрестили его «Итаником» в честь злополучного пассажирского корабля «Титаник». Рынок же опять не смог проявить терпение и принял в качестве преемника 64-разрядную версию x86, а не Itanium.[4]

4 RISC ПРОТИВ CISC

AMD и Intel понадобились проектные группы по 500 человек и превосходная полупроводниковая технология, чтобы сократить разрыв в производительности между x86 и RISC. Опять же, ради производительности, которая достигается благодаря конвейеризации, декодер инструкций на лету переводит сложные инструкции x86 во внутренние RISC-подобные микроинструкции. AMD и Intel затем строят конвейер их выполнения. Любые идеи, которые дизайнеры RISC использовали для повышения производительности — отдельные кэши инструкций и данных, кэши второго уровня на чипе, глубокий конвейер (deep pipeline), а также одновременное получение и выполнение нескольких инструкций — затем включили в x86. На пике эры персональных компьютеров в 2011 году AMD и Intel ежегодно поставляли около 350 миллионов x86-микропроцессоров. Высокие объёмы и низкая маржа индустрии также означали более низкие цены, чем у компьютеров RISC.

С сотнями миллионов ежегодно продаваемых компьютеров гигантским рынком стало программное обеспечение. В то время как поставщикам ПО для Unix приходилось выпускать разные версии ПО для разных архитектур RISCAlpha, HP-PA, MIPS, Power и SPARC — у персональных компьютеров была одна ISA, поэтому разработчики выпускали «ужатый» софт, бинарно совместимый только с архитектурой x86. Из-за гораздо большей программной базы, аналогичной производительности и более низких цен к 2000 году архитектура x86 доминировала на рынках настольных компьютеров и малых серверов.[5]

Apple помогла открыть эпоху пост-ПК с выпуском iPhone в 2007 году. Вместо закупок микропроцессоров смартфонные компании делали собственные системы-на-чипе (SoC), используя чужие наработки, в том числе процессоры RISC от ARM. Здесь конструкторам важна не только производительность, но ещё энергопотребление и площадь кристалла, что поставило в невыгодное положение архитектуры CISC. Кроме того, Интернет вещей значительно увеличил как количество процессоров, так и необходимые компромиссы в размерах чипа, мощности, стоимости и производительности. Эта тенденция повысила важность времени и стоимости проектирования, что ещё больше ухудшило положение процессоров CISC. В сегодняшнюю эпоху пост-ПК годовые поставки x86 упали почти на 10% с пикового 2011 года, в то время как чипы RISC взлетели до 20 миллиардов. Сегодня 99% 32- и 64-разрядных процессоров в мире — это RISC.

5 СОВРЕМЕННЫЕ ВЫЗОВЫ ДЛЯ ПРОЦЕССОРНОЙ АРХИТЕКТУРЫ

Большинство конструкторов в индустрии не разрабатывают новые ISA, а внедряют существующие ISA в существующую технологию производства. С конца 70-х превалирующей технологией были интегральные схемы на МОП-структурах (MOS), сначала n-типа (nMOS), а затем комплементарного (CMOS). Ошеломляющие темпы совершенствования технологии MOS — зафиксированные в предсказаниях Гордона Мура — стали движущей силой, которая позволяла конструкторам разрабатывать более агрессивные методы достижения производительности для данной ISA. Первоначальное предсказание Мура в 1965 году предусматривало ежегодное удвоение плотности транзисторов; в 1975 году он пересмотрел его, прогнозируя удвоение каждые два года. В конце концов этот прогноз стали называть законом Мура. Поскольку плотность транзисторов растёт квадратично, а скорость — линейно, с помощью большего количества транзисторов можно повышать производительность.[6]

6 БУДУЩИЕ ВОЗМОЖНОСТИ В КОМПЬЮТЕРНОЙ АРХИТЕКТУРЫ

Присущая процессорам общего назначения неэффективность, будь то технологии ILP или многоядерные процессоры, в сочетании с завершением масштабирования Деннарда и законом Мура делают маловероятным, что архитекторы и разработчики процессоров смогут поддерживать значительные темпы повышения производительности процессоров общего назначения. Учитывая важность повышения производительности для ПО, мы должны задать вопрос: какие ещё есть перспективные подходы?

Есть две явные возможности, а также третья, созданная путём объединения этих двух. Во-первых, существующие методы разработки ПО широко используют высокоуровневые языки с динамической типизацией. К сожалению, такие языки обычно интерпретируются и выполняются крайне неэффективно. Для иллюстрации этой неэффективности Лейсерсон с коллегами привели небольшой пример: перемножение матриц.

Рисунок 2 - Потенциальное ускорение перемножения матриц Python.

Как показано на рис. 2, простое переписывание кода с Python на C повышает производительность в 47 раз. Использование параллельных циклов на многих ядрах даёт дополнительный коэффициент примерно 7. Оптимизация структуры памяти для использования кэшей дает коэффициент 20, и последний фактор 9 происходит от использования аппаратных расширений для выполнения параллельных операций SIMD, которые способны выполнять 16 32-разрядных операций в инструкции. После этого финальная, сильно оптимизированная версия выполняется на многоядерном процессоре Intel в 62 806 раз быстрее, чем первоначальная Python-версия. Это, конечно, небольшой пример. Можно предположить, что программисты будут использовать оптимизированную библиотеку. Хотя здесь преувеличен разрыв в производительности, но существует, вероятно, много программ, которые можно оптимизировать в 100-1000 раз.

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

6 СПЕЦИАЛИЗИРОВАННЫЕ АРХИТЕКТУРЫ

Более аппаратно-ориентированный подход — проектирование архитектур, адаптированных к конкретной предметной области, где они демонстрируют значительную эффективность. Это специализированные или предметно-ориентированные архитектуры (domain-specific architectures, DSA). Это обычно программируемые и тьюринг-полные процессоры, но с учётом конкретного класса задач. В этом смысле они отличаются от специализированных интегральных схем (application-specific integrated circuits, ASIC), которые часто используются для одной функции с кодом, который редко изменяется. DSA часто называют ускорителями, так как они ускоряют некоторые приложения по сравнению с выполнением всего приложения на CPU общего назначения. Кроме того, DSA могут обеспечить более высокую производительность, поскольку они более точно адаптированы к потребностям приложения. Примеры DSA включают графические процессоры (GPU), процессоры нейронных сетей, используемые для глубокого обучения, и процессоры для программно-определяемых сетей (SDN). DSA достигают более высокой производительности и большей энергоэффективности по четырём основным причинам.

Во-первых, DSA используют более эффективную форму параллелизма для конкретной предметной области. Например, SIMD (одиночный поток команд, множественный поток данных) более эффективен, чем MIMD (множественный поток команд, множественный поток данных). Хотя SIMD менее гибок, он хорошо подходит для многих DSA. Специализированные процессоры могут также использовать подходы VLIW к ILP, вместо плохо работающих спекулятивных механизмов. Как упоминалось ранее, процессоры VLIW плохо подходят для кода общего назначения, но для узких областей гораздо более эффективны, поскольку механизмы управления проще. В частности, самые топовые процессоры общего назначения чрезмерно многоконвейерны, что требует сложной логики управления и для начала, и для завершения инструкций. Напротив, VLIW выполняет необходимый анализ и планирование во время компиляции, что может хорошо работать для явно параллельной программы.

Во-вторых, службы DSA более эффективно используют иерархию памяти. Доступ к памяти стал гораздо дороже, чем арифметические вычисления, как отметил Горовиц. Например, доступ к блоку в 32-килобайтном кэше требует примерно в 200 раз больше энергии, чем сложение 32-разрядных целых чисел. Такая огромная разница делает оптимизацию доступа к памяти критически важной для достижения высокой энергоэффективности. Процессоры общего назначения выполняют код, в котором доступы к памяти обычно демонстрируют пространственную и временну́ю локальность, но в остальном не очень предсказуемы во время компиляции. Поэтому для увеличения пропускной способности CPU используют многоуровневые кэши и скрывают задержку в относительно медленных DRAM за пределами кристалла. Эти многоуровневые кэши часто потребляют около половины энергии процессора, зато предотвращают почти все обращения к DRAM, на что уходит примерно в 10 раз больше энергии, чем на доступ к кэшу последнего уровня.

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

В-третьих, DSA может снижать точность вычислений, если высокая точность не нужна. CPU общего назначения обычно поддерживают 32-и 64-разрядные целочисленные вычисления, а также данные с плавающей запятой (FP). Для многих приложений в машинном обучении и графике это избыточная точность. Например, в глубоких нейросетях при расчёте часто используются 4-, 8- или 16-разрядные числа, улучшая и пропускную способность данных, и вычислительную мощность. Аналогично, для обучения нейросетей полезны вычисления с плавающей запятой, но достаточно 32 бит, а часто и 16 бит.

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

ЗАКЛЮЧЕНИЕ

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

СПИСОК ЛИТЕРАТУРЫ

1. Масштабирования Деннарда. [Электронный ресурс]. – Режим доступа: http://www.grandars.ru/college/pravovedenie/nomenklatura-del.html (дата обращения: 2020г.).

2. Средства хранения документов. [Электронный ресурс]. – Режим доступа: https://studref.com/304416/filosofiya/sredstva_hraneniya_dokumentov (дата обращения: 2020г.).

3. Закон Мура. [Электронный ресурс]. – Режим доступа: https://uchebnik.online/knigi-deloproizvodstvo_860/sredstva-hraneniya-poiska-transportirovaniya-52794.html (дата обращения: 2020г.).

4. RICS. [Электронный ресурс]. – Режим доступа: https://economy-ru.info/info/150079/ (дата обращения: 2020г.).

5. SICS/ Отечественные архивы. - 2001. -№2.

6. Привалов В.Ф. Обеспечение сохранности документального наследия в современных условиях / Отечественные архивы. - 1999. - №2.

Просмотров работы: 17