Какой принцип лежит в основе архитектуры современных компьютеров

Обновлено: 04.07.2024

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

Контент

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

  • Модули и интерфейсы
  • Имена
  • Слои
  • Косвенное обращение и виртуализация
  • Избыточность и отказоустойчивость
  • Архитектура клиент/сервер
  • Децентрализованные архитектуры
  • Стандартные блоки транзакций

Предпосылки обучения

Обязательные курсы

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

  • COM-208 Компьютерные сети
  • CS-208/209 Компьютерная архитектура
  • CS-210 Функциональное программирование
  • CS-305 Разработка программного обеспечения
  • CS-322 Введение в системы баз данных
  • CS-323. Введение в операционные системы.

Рекомендуемые курсы

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

  • CS-320: компьютерная обработка языка
  • CS-470: передовая компьютерная архитектура
  • CS-422: Системы баз данных
  • COM-407: сеть TCP/IP

Результаты обучения

К концу курса учащийся должен уметь:

  • Разработать компьютерные и коммуникационные системы, которые хорошо работают.
  • Ищите рациональные компромиссы при проектировании (например, производительность и правильность, задержка и доступность).
  • Предвидеть возникающее поведение системы (например, каскады сбоев, уязвимости в системе безопасности)
  • Объединить несколько методов, идей и алгоритмов из разных областей вычислений/коммуникаций в рабочую систему.

Методы обучения

  • Сочетание онлайн-лекций и лекций в классе.
  • Интерактивные занятия по дизайну
  • Чтение заданий
  • Домашнее задание

Ожидаемые действия учащихся

  • Посещайте лекции и занятия по дизайну.
  • Выполнить задания по чтению и письму.
  • Принимать активное участие в курсе (физически и онлайн).

Методы оценки

  • 40 % операций в секунду + тесты
  • 50 % Промежуточный экзамен + итоговый экзамен
  • 10 % презентаций

Контроль

Часы работы Да
Ассистенты Да
Форум Да

Ресурсы

Библиография

Посетите веб-сайт курса для получения последней информации и актуальной библиографии.

Учебный год 21/22 Факультет компьютерных наук Уровень Бакалавриат Уровень 2 Руководитель модуля Адам Честер Сумма кредитов 15 Продолжительность модуля 10 недель Оценка Многократное Место обучения Главный кампус Уорикского университета, Ковентри

Вводное описание

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

Цели модуля

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

Краткий план

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

Контекст для проектирования современных компьютерных систем, в том числе:

  • Параметры классификации компьютерных систем
  • Постоянные тенденции во встроенных системах
  • Формы параллелизма, оценка производительности
  • Архитектурные разработки

Расширенные темы по системам памяти, например:

  • Память с чередованием — структура, производительность
  • Виртуальная память – использование, локальность ссылок, производительность
  • Страничная память: структура, проблемы, преобразование адресов, оптимизация
  • Кэш-память — структура, производительность, реализация, оптимизация.

Расширенные темы по архитектуре процессора, включая:

  • Проблемы управления ЦП
  • Последовательность инструкций и группировка тактов
  • Параллелизм на уровне инструкций: зависимость от данных, использование, измерение
  • Предикация ветвления и спекулятивное выполнение
  • Микрооперации и управляющие сигналы — взаимосвязь, генерация управляющих сигналов, рассмотрение аппаратного обеспечения, реализации, микропрограммное управление
  • Принципы конвейерной обработки — конвейеры инструкций, опасности, анализ конвейеров
  • Параллелизм на уровне потоков: многопоточность для повышения пропускной способности однопроцессорных систем, общие подходы, проблемы детализации, планирование потоков, измерение
  • Формы многопоточности — блочная, чередующаяся и одновременная.
  • Принципы суперскалярных процессоров — структура, производительность, оценка

Параллельная организация компьютеров, например:

  • Классификации параллелизма
  • Архитектуры SIMD — векторные вычисления, расширения набора инструкций SIMD
  • Архитектуры MIMD: когерентность кэша, ограничение кэша, широковещательная запись в кэш, отслеживающая шина, согласованность каталогов, MESI, модели согласованности
  • Взаимосвязь процессоров — принципы взаимосвязи процессоров, сетевые топологии, реализации, свойства, производительность, стоимость
  • Многоядерные системы: структура, производительность, сложность, энергопотребление, использование памяти, проблемы разработки программного обеспечения для многоядерных систем.
  • Параллелизм на уровне данных: мотивация, проблемы, приложения
  • Многоядерная архитектура: мотивы и постоянные тенденции, графические процессоры, будущие архитектуры, проблемы разработки программного обеспечения для многоядерных систем
  • Многопроцессорные системы – сопряжение процессоров, симметричные многопроцессорные системы, кластерные ресурсы, высокопроизводительные системы, бенчмаркинг производительности, вопросы разработки программного обеспечения для многопроцессорных систем.

Ввод-вывод и вторичное хранилище, возможно, включая:

  • Методы ввода-вывода — варианты опроса, прерывания, прямой доступ к памяти
  • Каналы ввода-вывода – структура, проблемы с задержкой и пропускной способностью, стандарты – RAID-системы – организация, компромисс между производительностью и стоимостью
  • Сети хранения данных — мотивация, организация, контроль, проблемы с производительностью.
Результаты обучения

К концу модуля учащиеся должны уметь:

  • – Обсудите организацию компьютерных систем и то, как приложения влияют на различные варианты дизайна.
  • – Понимание различных архитектур процессоров и процессов проектирования на уровне системы.
  • – Понимать компоненты и работу иерархии памяти, а также ряд проблем с производительностью, влияющих на ее структуру.
  • - Понимать организацию и работу параллельных компьютерных систем текущего поколения, включая многопроцессорные и многоядерные системы.
  • – Понимать принципы ввода-вывода в компьютерных системах, включая жизнеспособные механизмы ввода-вывода и организацию вторичного хранилища.
  • - Развить навыки системного программирования в части проектирования и организации компьютерных систем.
Примерный список для чтения

Пожалуйста, перейдите по ссылке Talis Aspire для получения самого актуального списка.

Специальные навыки

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

Переносимые навыки

Общие навыки работы с ИТ – использование компьютера во время работы.
Навыки счета – развиваются при оценке производительности программы.
Решение проблем – разработка творческого решения курсовой работы.

Время обучения

Тип Обязательно
Лекции 30 сеансов 1 час (20%)
Частное изучение 120 часов (80%)
Всего 150 часов
Описание частного кабинета

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

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

Основная структура выглядит следующим образом:

Он также известен как компьютер IAS и состоит из трех основных блоков:

  1. Центральный процессор (ЦП)
  2. Блок основной памяти
  3. Устройство ввода/вывода
  • Блок управления.
    Блок управления (CU) обрабатывает все управляющие сигналы процессора. Он направляет все потоки ввода и вывода, извлекает код для инструкций и контролирует, как данные перемещаются по системе.
  • Арифметико-логическое устройство (АЛУ).
    Арифметико-логическое устройство — это часть ЦП, которая выполняет все вычисления, которые могут потребоваться ЦП, например, вычисления. Сложение, вычитание, сравнение. Он выполняет логические операции, операции сдвига битов и арифметические операции.
  • Блок основной памяти (регистры) –
    1. Накопитель: сохраняет результаты вычислений, выполненных АЛУ.
    2. Счетчик программ (ПК): отслеживает расположение в памяти следующих инструкций, с которыми нужно работать. Затем ПК передает этот следующий адрес в регистр адреса памяти (MAR).
    3. Регистр адреса памяти (MAR): в нем хранятся ячейки памяти инструкций, которые необходимо извлечь из памяти или сохранить в памяти.
    4. Регистр данных памяти (MDR): в нем хранятся инструкции, извлеченные из памяти, или любые данные, которые должны быть переданы в память и сохранены в ней.
    5. Регистр текущих инструкций (CIR): в нем хранятся последние извлеченные инструкции, пока он ожидает кодирования и выполнения.
    6. Регистр буфера инструкций (IBR): инструкция, которая не должна выполняться немедленно, помещается в регистр буфера инструкций IBR.
  • Устройства ввода/вывода. Программа или данные считываются в основную память с устройства ввода или вторичного хранилища под управлением инструкции ввода ЦП. Устройства вывода используются для вывода информации с компьютера. Если какие-то результаты оцениваются компьютером и сохраняются в компьютере, то с помощью устройств вывода мы можем представить их пользователю.
  • Шины. Данные передаются из одной части компьютера в другую, соединяя все основные внутренние компоненты с ЦП и памятью с помощью шин. Типы:
    1. Шина данных. Она передает данные между блоком памяти, устройствами ввода-вывода и процессором.
    2. Адресная шина: по ней передается адрес данных (а не фактических данных) между памятью и процессором.
    3. Шина управления: по ней передаются управляющие команды от ЦП (и сигналы состояния от других устройств) для контроля и координации всех действий внутри компьютера.

Узкое место фон Неймана.
Что бы мы ни делали для повышения производительности, мы не можем уйти от того факта, что инструкции можно выполнять только по одной и только последовательно. Оба эти фактора сдерживают компетентность центрального процессора. Это обычно называют «узким местом фон Неймана». Мы можем предоставить процессор фон Неймана с большим объемом кэш-памяти, оперативной памяти или более быстрыми компонентами, но если мы хотим получить первоначальный прирост производительности процессора, необходимо провести тщательную проверку конфигурации процессора.

Эта архитектура очень важна и используется в наших ПК и даже в суперкомпьютерах.

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

Читать позже


Барбара Лисков изобрела архитектуру, лежащую в основе современных программ. «Разработка чего-то достаточно мощного — это искусство».

Коди О’Локлин для журнала Quanta

Сьюзан Д'Агостино

20 ноября 2019 г.

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

Но к концу 1960-х годов развитие вычислительной техники превзошло возможности программистов. Многие ученые-компьютерщики создавали программы, не задумываясь о дизайне. Они написали длинные, бессвязные алгоритмы, пронизанные операторами «перейти» — инструкциями для машины перейти к новой части программы, если выполняется определенное условие. Ранние программисты полагались на эти утверждения, чтобы исправить непредвиденные последствия своего кода, но они делали программы трудными для чтения, непредсказуемыми и даже опасными.Плохое программное обеспечение в конечном итоге унесло жизни, как, например, когда компьютеризированная радиационная установка Therac-25 доставила больным раком огромные передозировки радиации.

К тому времени, когда Барбара Лисков получила докторскую степень в области компьютерных наук в Стэнфордском университете в 1968 году, она завидовала инженерам-электрикам, потому что они работали с оборудованием, соединенным проводами. Эта архитектура, естественно, позволяла им разбивать проблемы и делить их на модули, что давало им больше контроля, поскольку позволяло им независимо рассуждать о дискретных компонентах.

Как ученый-компьютерщик, думающий о коде, Лисков не мог работать с физическими объектами. Как писатель или поэт, она смотрела на пустую страницу.

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

«Одно из преимуществ того, что мы начали работать так рано, заключалось в том, что там уже были большие проблемы. Все, что нужно было сделать, это прыгнуть на них», — сказал Лисков. В 2008 году Лисков получил премию Тьюринга, которую часто называют Нобелевской премией в области вычислительной техники, за "вклад в разработку практических и теоретических основ языка программирования и проектирования систем, особенно связанных с абстракцией данных, отказоустойчивостью и распределенными вычислениями".

Журнал Quanta встретился с Лисковой у нее дома после Гейдельбергского форума лауреатов — закрытого собрания ученых-компьютерщиков и математиков, получивших самые престижные награды в своих областях только по приглашению. Лисков был приглашен в Гейдельберг, но должен был отменить его за несколько недель до форума по личным причинам. Интервью было сокращено и отредактировано для ясности.

Вы профессионально достигли совершеннолетия во время разработки искусственного интеллекта. Как изменилось отношение к ИИ и машинному обучению за время вашей карьеры?

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

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

Искусственный интеллект — это приложение, а не основная дисциплина. Он всегда использовался для чего-то.

Вы больше интересовались этим как основной дисциплиной?

Честно говоря, в те дни ИИ мало что мог сделать. Меня интересовала основная работа. «Как вы организуете программное обеспечение?» была действительно интересная проблема. В процессе проектирования вы сталкиваетесь с выяснением того, как реализовать приложение. Вам нужно организовать код, разбив его на части. Абстракция данных помогает в этом. Это очень похоже на доказательство теоремы. Нельзя доказать теорему одним махом. Вместо этого вы придумываете какие-то леммы и разлагаете проблему.

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

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