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

Обновлено: 21.11.2024

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

Обзор

Что такое параллельные вычисления?

Последовательные вычисления

Традиционно программное обеспечение писалось для последовательных вычислений:

  • Задача разбита на отдельные серии инструкций.
  • Инструкции выполняются последовательно одна за другой
  • Выполняется на одном процессоре
  • В любой момент времени может выполняться только одна инструкция

Например:

Параллельные вычисления

Проще говоря, параллельные вычисления — это одновременное использование нескольких вычислительных ресурсов для решения вычислительной задачи:

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

Например:

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

    Параллельные компьютеры

    • Сегодня практически все автономные компьютеры параллельны с аппаратной точки зрения:
      • Несколько функциональных блоков (кеш L1, кэш L2, переход, предварительная выборка, декодирование, операции с плавающей запятой, обработка графики (GPU), целые числа и т. д.)
      • Несколько исполнительных блоков/ядер
      • Несколько аппаратных потоков

      • Сети соединяют несколько автономных компьютеров (узлов) для создания больших параллельных компьютерных кластеров.
      • Например, на приведенной ниже схеме показан типичный кластер параллельных компьютеров LLNL:
        • Каждый вычислительный узел сам по себе является многопроцессорным параллельным компьютером
        • Несколько вычислительных узлов объединены в сеть Infiniband.
        • Узлы специального назначения, также многопроцессорные, используются для других целей.
        • Большинство больших параллельных компьютеров (суперкомпьютеров) в мире представляют собой кластеры оборудования, произведенного несколькими (в основном) известными поставщиками.

        Зачем использовать параллельные вычисления?

        Реальный мир чрезвычайно сложен

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

        Основные причины использования параллельного программирования

        ЭКОНОМЬТЕ ВРЕМЯ И/ИЛИ ДЕНЬГИ
        • Теоретически, выделение большего количества ресурсов для выполнения задачи сократит время ее выполнения и потенциально сэкономит средства.
        • Параллельные компьютеры могут быть собраны из дешевых, широко распространенных компонентов.

        РЕШАТЬ БОЛЬШИЕ/БОЛЕЕ СЛОЖНЫЕ ПРОБЛЕМЫ

        ОБЕСПЕЧИТЬ ПАРАЛЛЕЛЬНОСТЬ
        • Один вычислительный ресурс может одновременно выполнять только одну операцию. Несколько вычислительных ресурсов могут выполнять множество задач одновременно.
        • Пример. Сети для совместной работы представляют собой глобальную площадку, где люди со всего мира могут встречаться и работать «виртуально».

        ИСПОЛЬЗОВАТЬ НЕМЕСТНЫЕ РЕСУРСЫ
        • Использование вычислительных ресурсов в глобальной сети или даже в Интернете, когда локальных вычислительных ресурсов недостаточно или недостаточно.
        • Пример. SETI@home (setiathome.berkeley.edu) насчитывает более 1,7 миллиона пользователей почти во всех странах мира (май 2018 г.).
        ЛУЧШЕ ИСПОЛЬЗОВАТЬ БАЗОВОЕ ПАРАЛЛЕЛЬНОЕ ОБОРУДОВАНИЕ
        • Современные компьютеры, даже ноутбуки, имеют параллельную архитектуру с несколькими процессорами/ядрами.
        • Параллельное программное обеспечение специально предназначено для параллельного оборудования с несколькими ядрами, потоками и т. д.
        • В большинстве случаев последовательные программы, запускаемые на современных компьютерах, «тратят впустую» потенциальную вычислительную мощность.

        Будущее

        Кто использует параллельные вычисления?

        Наука и техника

        Исторически параллельные вычисления считались «высшим уровнем вычислений» и использовались для моделирования сложных задач во многих областях науки и техники:

        • Атмосфера, Земля, Окружающая среда
        • Физика - прикладная, ядерная, частица, конденсированное состояние, высокое давление, термоядерный синтез, фотоника.
        • Бионаука, биотехнология, генетика
        • Химия, молекулярные науки
        • Геология, сейсмология
        • Машиностроение: от протезов до космических кораблей
        • Электротехника, схемотехника, микроэлектроника
        • Информатика, математика
        • Оборона, Оружие

        Промышленные и коммерческие

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

        Одновременный рост доступности больших данных и количества одновременных пользователей в Интернете оказывает особое давление на необходимость выполнения вычислительных задач «параллельно» или одновременно. Параллельные и распределенные вычисления встречаются во многих различных областях информатики, включая алгоритмы, компьютерную архитектуру, сети, операционные системы и разработку программного обеспечения. В начале 21 века наблюдался взрывной рост многопроцессорных систем и других стратегий ускорения работы сложных приложений. Параллельные и распределенные вычисления основаны на фундаментальных концепциях систем, таких как параллелизм, взаимное исключение, согласованность в управлении состоянием/памятью, передача сообщений и модели с общей памятью.

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

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

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

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

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

        Разработка на платформе

        Разработка на платформе связана с проектированием и разработкой приложений для определенных типов компьютеров и операционных систем («платформ»). Разработка на основе платформы учитывает системные характеристики, такие как веб-программирование, разработка мультимедиа, разработка мобильных приложений и робототехника. Платформы, такие как Интернет или планшет Android, позволяют учащимся узнавать в средах и о средах, ограниченных определенным оборудованием, интерфейсами прикладного программирования (API) и специальными службами. Эти среды существенно отличаются от программирования "общего назначения", поэтому требуются отдельные исследования и разработки.

        Например, рассмотрим разработку приложения для планшета Android. Платформа программирования Android называется Dalvic Virtual Machine (DVM), а язык представляет собой вариант Java. Однако Android-приложение определяется не просто как набор объектов и методов, но, более того, как набор «намерений» и «действий», которые примерно соответствуют экранам GUI, которые пользователь видит при работе с приложением. XML-программирование также необходимо, так как это язык, который определяет макет пользовательского интерфейса приложения. Наконец, синхронизация ввода-вывода при разработке приложений для Android требует больше усилий, чем на обычных платформах, хотя некоторые принципы управления файлами Java сохраняются.

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

        Запрошенный вами код профессии 15-1199.02 (инженеры/архитекторы компьютерных систем) больше не используется. В будущем используйте вместо этого номер 15-1299.08 (компьютерные системные инженеры/архитекторы).

        Пример заявленных должностей: разработчик системы электронного обмена данными (разработчик системы EDI), архитектор информационных технологий (ИТ-архитектор), инженер по сетям и инфраструктуре, сетевой инженер, архитектор решений, системный архитектор, системный консультант, системный инженер

        Задачи

        Отображено 5 из 28

        Отображены все 28

        Технологические навыки

        Отображено 5 из 66 Показать 14 используемых инструментов

        Отображены все 66 Показать 14 используемых инструментов

        Горячие технологии — требования к технологиям, которые работодатели часто включают в объявления о вакансиях.

        Используемые инструменты

        Отображено 5 из 14 Показать 66 технологических навыков

        Все 14 отображенных Показать 66 технологических навыков

        Знания

        Отображено 5 из 8

        Отображены все 8

        • Компьютеры и электроника — Знание печатных плат, процессоров, микросхем, электронного оборудования, компьютерного оборудования и программного обеспечения, включая приложения и программирование.
        • Инженерия и технологии — Знание практического применения технических наук и технологий. Это включает в себя применение принципов, методов, процедур и оборудования для проектирования и производства различных товаров и услуг.
        • Английский язык — Знание структуры и содержания английского языка, включая значение и написание слов, правила составления и грамматику.
        • Математика — Знание арифметики, алгебры, геометрии, исчисления, статистики и их приложений.
        • Дизайн — знание приемов, инструментов и принципов проектирования, необходимых для создания точных технических планов, чертежей, чертежей и моделей.
        • Телекоммуникации — Знание передачи, вещания, коммутации, управления и эксплуатации телекоммуникационных систем.
        • Администрирование и управление — знание принципов бизнеса и управления, связанных со стратегическим планированием, распределением ресурсов, моделированием человеческих ресурсов, техникой лидерства, производственными методами и координацией людей и ресурсов.
        • Клиентское и личное обслуживание — Знание принципов и процессов предоставления клиентских и личных услуг. Это включает в себя оценку потребностей клиентов, соответствие стандартам качества услуг и оценку удовлетворенности клиентов.

        Навыки

        Отображено 5 из 25

        Отображены все 25

        • Критическое мышление. Использование логики и рассуждений для выявления сильных и слабых сторон альтернативных решений, выводов или подходов к проблемам.
        • Понимание прочитанного — понимание написанных предложений и абзацев в рабочих документах.
        • Активное слушание — уделение полного внимания тому, что говорят другие люди, уделение времени тому, чтобы понять высказанные мысли, задавать вопросы по мере необходимости и не перебивать в неподходящее время.
        • Оценка систем — определение показателей или показателей производительности системы и действий, необходимых для улучшения или корректировки производительности в соответствии с целями системы.
        • Решение сложных проблем. Выявление сложных проблем и анализ соответствующей информации для разработки и оценки вариантов и реализации решений.
        • Системный анализ — определение того, как должна работать система и как изменения условий, операций и среды повлияют на результаты.
        • Письмо — эффективное общение в письменной форме в соответствии с потребностями аудитории.
        • Активное обучение. Понимание значения новой информации как для текущих, так и для будущих решений проблем и принятия решений.
        • Анализ операций — анализ потребностей и требований к продукту для создания дизайна.
        • Говорение. Общение с другими для эффективной передачи информации.
        • Мониторинг. Мониторинг/оценка собственной деятельности, эффективности других лиц или организаций с целью внесения улучшений или принятия корректирующих мер.
        • Оценка и принятие решений. Рассмотрение относительных затрат и выгод потенциальных действий для выбора наиболее подходящего.
        • Программирование — Написание компьютерных программ для различных целей.
        • Управление временем — управление своим временем и временем других людей.
        • Координация — согласование действий с действиями других.
        • Инструктаж — обучение других тому, как что-то делать.
        • Математика. Использование математики для решения задач.
        • Наука — Использование научных правил и методов для решения проблем.
        • Стратегии обучения — выбор и использование методов и процедур обучения/обучения, соответствующих ситуации при изучении или обучении новым вещам.
        • Управление кадровыми ресурсами — мотивация, развитие и руководство людьми во время их работы, выявление лучших людей для работы.
        • Переговоры. Объединение других и попытка примирить разногласия.
        • Убеждение — убеждение других изменить свое мнение или поведение.
        • Анализ контроля качества — проведение испытаний и проверок продуктов, услуг или процессов для оценки качества или производительности.
        • Ориентация на услуги – активный поиск способов помочь людям.
        • Социальная восприимчивость — знание реакций других и понимание того, почему они реагируют именно так, а не иначе.

        Способности

        Отображено 5 из 19

        Отображены все 19

        • Чувствительность к проблемам — способность определить, когда что-то не так или может пойти не так. Это не включает в себя решение проблемы, а только признание того, что проблема есть.
        • Понимание устной речи — способность слушать и понимать информацию и идеи, представленные в произнесенных словах и предложениях.
        • Письменное понимание — способность читать и понимать информацию и идеи, представленные в письменной форме.
        • Письменное выражение — способность излагать информацию и идеи в письменной форме, чтобы другие могли их понять.
        • Дедуктивное мышление — способность применять общие правила к конкретным задачам, чтобы получать разумные ответы.
        • Индуктивное мышление — способность объединять фрагменты информации для формирования общих правил или выводов (в том числе находить взаимосвязь между, казалось бы, не связанными событиями).
        • Упорядочивание информации — способность упорядочивать вещи или действия в определенном порядке или образце в соответствии с определенным правилом или набором правил (например, образцом чисел, букв, слов, изображений, математических операций).
        • Устное выражение — способность сообщать информацию и идеи в устной форме так, чтобы другие могли ее понять.
        • Оригинальность. Способность выдвигать необычные или остроумные идеи по заданной теме или ситуации или разрабатывать творческие способы решения проблемы.
        • Ближнее зрение — способность видеть детали с близкого расстояния (в пределах нескольких футов от наблюдателя).
        • Свободное владение идеями — способность выдвигать ряд идей по теме (важно количество идей, а не их качество, правильность или креативность).
        • Математическое мышление — способность выбирать правильные математические методы или формулы для решения проблемы.
        • Четкость речи — способность говорить четко, чтобы другие могли вас понять.
        • Распознавание речи — способность распознавать и понимать речь другого человека.
        • Гибкость категорий — возможность создавать или использовать разные наборы правил для комбинирования или группировки объектов различными способами.
        • Управление числами — возможность быстро и правильно складывать, вычитать, умножать или делить.
        • Избирательное внимание — способность концентрироваться на задаче в течение определенного периода времени, не отвлекаясь.
        • Гибкость закрытия — способность идентифицировать или обнаруживать известный шаблон (фигуру, объект, слово или звук), который скрыт в другом отвлекающем материале.
        • Скорость восприятия — способность быстро и точно сравнивать сходства и различия между наборами букв, цифр, объектов, изображений или шаблонов. Сравниваемые предметы могут быть представлены одновременно или один за другим. Эта способность также включает в себя сравнение представленного объекта с запомненным объектом.

        Рабочая деятельность

        Отображено 5 из 29

        Отображены все 29

        • Работа с компьютерами — использование компьютеров и компьютерных систем (включая аппаратное и программное обеспечение) для программирования, написания программного обеспечения, настройки функций, ввода данных или обработки информации.
        • Анализ данных или информации. Определение основных принципов, причин или фактов информации путем разбивки информации или данных на отдельные части.
        • Принятие решений и решение проблем — анализ информации и оценка результатов для выбора наилучшего решения и решения проблем.
        • Обновление и использование релевантных знаний. Постоянное обновление технических знаний и применение новых знаний в своей работе.
        • Обработка информации — компиляция, кодирование, категоризация, расчет, табулирование, аудит или проверка информации или данных.
        • Общение с руководителями, коллегами или подчиненными — Предоставление информации руководителям, коллегам и подчиненным по телефону, в письменной форме, по электронной почте или лично.
        • Получение информации — просмотр, получение и иное получение информации из всех соответствующих источников.
        • Креативное мышление — разработка, проектирование или создание новых приложений, идей, взаимоотношений, систем или продуктов, включая художественные вклады.
        • Предоставление консультаций и советов другим — предоставление рекомендаций и экспертных советов руководству или другим группам по техническим, системным или технологическим темам.
        • Оценка информации для определения соответствия стандартам — использование соответствующей информации и индивидуальных суждений для определения того, соответствуют ли события или процессы законам, нормативным актам или стандартам.
        • Интерпретация значения информации для других — перевод или объяснение того, что означает информация и как ее можно использовать.
        • Организация, планирование и расстановка приоритетов в работе. Разработка конкретных целей и планов по расстановке приоритетов, организации и выполнению работы.
        • Документирование/запись информации — ввод, расшифровка, запись, хранение или ведение информации в письменной или электронной/магнитной форме.
        • Установление и поддержание межличностных отношений. Развитие конструктивных и совместных рабочих отношений с другими людьми и поддержание их с течением времени.
        • Идентификация объектов, действий и событий — идентификация информации путем категоризации, оценки, распознавания различий или сходств, а также обнаружения изменений в обстоятельствах или событиях.
        • Разработка целей и стратегий. Постановка долгосрочных целей и определение стратегий и действий для их достижения.
        • Развитие и создание команд. Поощрение и укрепление взаимного доверия, уважения и сотрудничества между членами команды.
        • Оценка качеств объектов, услуг или людей — оценка ценности, важности или качества вещей или людей.
        • Координация работы и деятельности других — привлечение членов группы к совместной работе для выполнения задач.
        • Оценка количественных характеристик продуктов, событий или информации — оценка размеров, расстояний и количества; или определение времени, затрат, ресурсов или материалов, необходимых для выполнения рабочей деятельности.
        • Направлять, направлять и мотивировать подчиненных. Предоставление указаний и указаний подчиненным, включая установление стандартов производительности и контроль за производительностью.
        • Обучение и обучение других — выявление образовательных потребностей других, разработка формальных образовательных или обучающих программ или классов, а также обучение или инструктирование других.
        • Общение с людьми за пределами организации — общение с людьми за пределами организации, представление организации перед клиентами, общественностью, правительством и другими внешними источниками. Данной информацией можно обмениваться лично, в письменной форме, по телефону или электронной почте.
        • Планирование работы и мероприятий — планирование мероприятий, программ и мероприятий, а также работы других.
        • Коучинг и развитие других — выявление потребностей других в развитии и обучение, наставничество или иная помощь другим в улучшении их знаний или навыков.
        • Разрешение конфликтов и ведение переговоров с другими — рассмотрение жалоб, урегулирование споров, разрешение жалоб и конфликтов или иное ведение переговоров с другими.
        • Чертеж, компоновка и спецификация технических устройств, деталей и оборудования — Предоставление документации, подробных инструкций, чертежей или спецификаций, чтобы рассказать другим о том, как устройства, детали, оборудование или конструкции должны быть изготовлены, сконструированы, собраны, изменены, сохранены или использованы.
        • Мониторинг процессов, материалов или окружения — мониторинг и анализ информации из материалов, событий или окружающей среды для обнаружения или оценки проблем.
        • Продажи или влияние на других — убеждение других покупать товары/товары или иным образом изменить свое мнение или действия.

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

        На самом базовом уровне компьютер состоит из блока управления, арифметико-логического блока (ALU), блока памяти и контроллеров ввода-вывода (I/O). АЛУ выполняет простые операции сложения, вычитания, умножения, деления и логические операции, такие как ИЛИ и И. В памяти хранятся инструкции и данные программы. Блок управления извлекает данные и инструкции из памяти и использует операции АЛУ для выполнения этих инструкций с использованием этих данных. (Блок управления и АЛУ вместе называются центральным процессором [ЦП].) Когда встречается инструкция ввода или вывода, блок управления передает данные между памятью и назначенным контроллером ввода-вывода.Скорость работы ЦП в первую очередь определяет скорость работы компьютера в целом. Все эти компоненты — блок управления, АЛУ, память и контроллеры ввода-вывода — реализованы на транзисторных схемах.

        Компьютеры размещают веб-сайты, состоящие из HTML, и отправляют текстовые сообщения так же просто, как. РЖУ НЕ МОГУ. Взломайте этот тест, и пусть какая-нибудь технология подсчитает ваш результат и раскроет вам его содержание.

        Компьютеры также имеют другой уровень памяти, называемый кешем, небольшой, чрезвычайно быстрый (по сравнению с основной памятью или оперативной памятью [ОЗУ]) модуль, который можно использовать для хранения информации, которая срочно или часто требуется. Текущие исследования включают дизайн кэша и алгоритмы, которые могут прогнозировать, какие данные потребуются в следующий раз, и предварительно загружать их в кэш для повышения производительности.

        Контроллеры ввода-вывода подключают компьютер к определенным устройствам ввода (таким как клавиатуры и сенсорные дисплеи) для передачи информации в память и к устройствам вывода (таким как принтеры и дисплеи) для передачи информации из памяти пользователям. Дополнительные контроллеры ввода-вывода подключают компьютер к сети через порты, обеспечивающие канал, по которому передаются данные, когда компьютер подключен к Интернету.

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

        Работа компьютера после загрузки программы и некоторых данных в оперативную память происходит следующим образом. Первая инструкция передается из ОЗУ в блок управления и интерпретируется аппаратной схемой. Например, предположим, что инструкция представляет собой строку битов, являющуюся кодом для ЗАГРУЗКИ 10. Эта инструкция загружает содержимое ячейки памяти 10 в АЛУ. Выбирается следующая инструкция, скажем, ADD 15. Затем блок управления загружает содержимое ячейки памяти 15 в АЛУ и добавляет его к уже имеющемуся номеру. Наконец, инструкция STORE 20 сохранит эту сумму в ячейке 20. На этом уровне работа компьютера мало чем отличается от работы карманного калькулятора.

        В целом, программы — это не просто длинные последовательности операций ЗАГРУЗКИ, СОХРАНЕНИЯ и арифметических операций. Самое главное, компьютерные языки включают условные инструкции — по сути, правила, которые гласят: «Если ячейка памяти n удовлетворяет условию a, выполните следующую команду с номером x». , иначе выполните инструкцию y». Это позволяет определять ход программы по результатам предыдущих операций — критически важная возможность.

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

        Логический дизайн — это область компьютерных наук, которая занимается проектированием электронных схем с использованием фундаментальных принципов и свойств логики (см. булева алгебра) для выполнения операций блока управления, ALU, контроллеры ввода-вывода и другое оборудование. Каждая логическая функция (И, ИЛИ и НЕ) реализуется устройством определенного типа, называемым логическим элементом. Например, схема сложения АЛУ имеет входы, соответствующие всем битам двух суммируемых чисел, и выходы, соответствующие битам суммы. Расположение проводов и вентилей, соединяющих входы и выходы, определяется математическим определением сложения. В конструкции блока управления предусмотрены схемы, интерпретирующие инструкции. Из-за потребности в эффективности логическая конструкция также должна оптимизировать схему для работы с максимальной скоростью и иметь минимальное количество логических элементов и цепей.

        Важной областью, связанной с архитектурой, является разработка микропроцессоров, которые представляют собой полноценные ЦП — блок управления, АЛУ и память — на одном кристалле интегральной схемы. Дополнительная память и схемы управления вводом-выводом связаны с этим чипом, чтобы сформировать законченный компьютер. Эти миниатюрные устройства содержат миллионы транзисторов, реализующих блоки обработки и памяти современных компьютеров.

        Проектирование микропроцессора СБИС происходит в несколько этапов, включая создание начальной функциональной или поведенческой спецификации, кодирование этой спецификации на языке описания оборудования, разбивку конструкции на модули и создание размеров и форм для конечных компонентов микросхемы. Это также включает в себя планирование чипа, которое включает в себя создание «плана этажа», чтобы указать, где на чипе каждый компонент должен быть размещен и соединен с другими компонентами. Ученые-компьютерщики также участвуют в создании инструментов автоматизированного проектирования (САПР), которые помогают инженерам на различных этапах проектирования микросхем, а также в разработке необходимых теоретических результатов, таких как эффективное проектирование плана этажа с почти минимальной площадью, удовлетворяющей требованиям. заданные ограничения.

        Прогресс в области технологии интегральных схем был невероятным. Например, в 1971 году первый микропроцессорный чип (4004 корпорации Intel) имел всего 2300 транзисторов, в 1993 году чип Intel Pentium имел более 3 миллионов транзисторов, а к 2000 году количество транзисторов на таком чипе составило около 50 миллионов. Чип Power7, представленный IBM в 2010 году, содержал примерно 1 миллиард транзисторов. Явление, когда количество транзисторов в интегральной схеме удваивается примерно каждые два года, широко известно как закон Мура.

        Закон Мура. Гордон Э. Мур заметил, что количество транзисторов на компьютерном чипе удваивается примерно каждые 18–24 месяца. Как показано на логарифмическом графике количества транзисторов в процессорах Intel на момент их появления, его «закон» соблюдался.

        Отказоустойчивость — это способность компьютера продолжать работу при отказе одного или нескольких его компонентов. Для обеспечения отказоустойчивости ключевые компоненты часто реплицируются, чтобы резервный компонент мог взять на себя их функции при необходимости. Такие приложения, как управление воздушным судном и управление производственным процессом, работают на системах с резервными процессорами, готовыми взять на себя управление в случае отказа основного процессора, а резервные системы часто работают параллельно, поэтому переход происходит плавно. Если системы критичны в том смысле, что их сбой может привести к катастрофическим последствиям (как в случае управления воздушным судном), несовместимые результаты, полученные от реплицированных процессов, запущенных параллельно на отдельных машинах, разрешаются с помощью механизма голосования. Ученые-компьютерщики занимаются анализом таких реплицированных систем, предоставляя теоретические подходы к оценке надежности, достигаемой при данной конфигурации и параметрах процессора, таких как среднее время наработки на отказ и среднее время, необходимое для ремонта процессора. Отказоустойчивость также является желательной функцией в распределенных системах и сетях. Например, преимуществом распределенной базы данных является то, что данные, реплицированные на разных узлах сети, могут обеспечить естественный механизм резервного копирования в случае сбоя одного узла.

        Вычислительные науки

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

        Математические методы, необходимые для вычислительной науки, требуют преобразования уравнений и функций из непрерывных в дискретные. Например, компьютерное интегрирование функции на интервале выполняется не путем применения интегрального исчисления, а путем аппроксимации площади под графиком функции как суммы площадей, полученных при вычислении функции в дискретных точках. Точно так же решение дифференциального уравнения получается как последовательность дискретных точек, определяемых путем аппроксимации кривой истинного решения последовательностью касательных отрезков. При такой дискретизации многие проблемы можно преобразовать в уравнение, включающее матрицу (прямоугольный массив чисел), решаемую с помощью линейной алгебры. Численный анализ - это изучение таких вычислительных методов.При применении численных методов необходимо учитывать несколько факторов: (1) условия, при которых метод дает решение, (2) точность решения, (3) является ли процесс решения стабильным (т. е. не показывает рост ошибки) , и (4) вычислительная сложность (в смысле, описанном выше) получения решения желаемой точности.

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

        Графика и визуальные вычисления

        Графика и визуальные вычисления — это область, связанная с отображением и управлением изображениями на экране компьютера. Эта область охватывает эффективную реализацию четырех взаимосвязанных вычислительных задач: рендеринг, моделирование, анимация и визуализация. Графические методы включают в себя принципы линейной алгебры, численного интегрирования, вычислительной геометрии, специального оборудования, форматов файлов и графических пользовательских интерфейсов (GUI) для выполнения этих сложных задач.

        Применения графики включают САПР, изобразительное искусство, медицинскую визуализацию, визуализацию научных данных и видеоигры. CAD-системы позволяют использовать компьютер для проектирования объектов, начиная от деталей автомобилей и заканчивая мостами и компьютерными чипами, предоставляя интерактивный инструмент рисования и инженерный интерфейс для инструментов моделирования и анализа. Приложения для изобразительного искусства позволяют художникам использовать экран компьютера в качестве среды для создания изображений, кинематографических спецэффектов, анимационных мультфильмов и телевизионных рекламных роликов. Приложения медицинской визуализации включают визуализацию данных, полученных с помощью таких технологий, как рентген и магнитно-резонансная томография (МРТ), чтобы помочь врачам в диагностике заболеваний. Научная визуализация использует огромные объемы данных для моделирования научных явлений, таких как моделирование океана, для создания изображений, которые обеспечивают более глубокое понимание явлений, чем таблицы чисел. Графика также обеспечивает реалистичную визуализацию для видеоигр, моделирования полета и других представлений реальности или фантазии. Термин виртуальная реальность был придуман для обозначения любого взаимодействия с компьютерным виртуальным миром.

        Изображение человеческого мозга, пораженного раком, полученное с помощью магнитно-резонансной томографии (МРТ). Ярко-синяя область указывает на то, что рак распространился на затылочную долю (внизу справа).

        Задачей компьютерной графики является разработка эффективных алгоритмов, которые управляют множеством линий, треугольников и многоугольников, составляющих компьютерное изображение. Чтобы на экране отображались реалистичные изображения, каждый объект должен быть представлен как набор плоских единиц. Края должны быть сглажены и текстурированы так, чтобы их основная конструкция из полигонов не была очевидна невооруженным глазом. Во многих приложениях неподвижных изображений недостаточно, и требуется быстрое отображение изображений в реальном времени. Для выполнения анимации в реальном времени необходимы как чрезвычайно эффективные алгоритмы, так и самое современное оборудование. (Дополнительные технические сведения о графических дисплеях см. в см. компьютерную графику.)

        Взаимодействие человека с компьютером

        Взаимодействие человека с компьютером (HCI) связано с проектированием эффективного взаимодействия между пользователями и компьютерами и созданием интерфейсов, поддерживающих это взаимодействие. HCI происходит на интерфейсе, который включает в себя как программное, так и аппаратное обеспечение. Дизайн пользовательского интерфейса влияет на жизненный цикл программного обеспечения, поэтому он должен выполняться на ранних этапах процесса проектирования. Поскольку пользовательские интерфейсы должны учитывать различные пользовательские стили и возможности, исследования HCI опираются на несколько дисциплин, включая психологию, социологию, антропологию и инженерию. В 1960-х годах пользовательские интерфейсы состояли из компьютерных консолей, которые позволяли оператору напрямую вводить команды, которые можно было выполнить немедленно или в будущем. С появлением более удобных для пользователя персональных компьютеров в 1980-х годах пользовательские интерфейсы стали более сложными, так что пользователь мог «указать и щелкнуть», чтобы отправить команду в операционную систему.

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

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