Описание элементарной операции, которую должен выполнять компьютер

Обновлено: 21.11.2024

Операционная система действует как посредник между пользователем компьютера и компьютерным оборудованием. Цель операционной системы — предоставить среду, в которой пользователь может удобно и эффективно выполнять программы.

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

  • Операционная система – это программа, которая управляет выполнением прикладных программ и действует как интерфейс между пользователем компьютера и компьютерным оборудованием.
  • Более распространенное определение состоит в том, что операционная система – это единственная программа, постоянно работающая на компьютере (обычно называемая ядром), а все остальные – прикладные программы.
  • Операционная система занимается распределением ресурсов и служб, таких как память, процессоры, устройства и информация. Операционная система соответственно включает программы для управления этими ресурсами, такие как контроллер трафика, планировщик, модуль управления памятью, программы ввода-вывода и файловая система.
  1. Удобство. ОС делает использование компьютера более удобным.
  2. Эффективность. ОС позволяет эффективно использовать системные ресурсы компьютера.
  3. Способность к развитию. ОС должна быть построена таким образом, чтобы обеспечить эффективную разработку, тестирование и внедрение новых системных функций одновременно, не мешая обслуживанию.
  4. Пропускная способность. ОС должна быть сконструирована таким образом, чтобы она могла обеспечить максимальную пропускную способность (количество задач в единицу времени).

Основные функции операционной системы:

  • Управление ресурсами. Когда в ОС происходит параллельный доступ, это означает, что при доступе к системе нескольких пользователей ОС работает как диспетчер ресурсов. В ее обязанности входит предоставление пользователю оборудования. Это снижает нагрузку на систему.
  • Управление процессом. Сюда входят различные задачи, такие как планирование и завершение процесса. ОС управляет несколькими задачами одновременно. Здесь происходит планирование ЦП, что означает, что все задачи будут выполняться множеством алгоритмов, которые используются для планирования.
  • Управление хранилищем: механизм файловой системы, используемый для управления хранилищем. NIFS, CFS, CIFS, NFS и т. д. — это некоторые файловые системы. Все данные хранятся на различных дорожках жестких дисков, которыми управляет диспетчер хранения. Он включал жесткий диск.
  • Управление памятью: относится к управлению основной памятью. Операционная система должна отслеживать, сколько памяти было использовано и кем. Он должен решить, какой процесс нуждается в памяти и сколько. ОС также должна выделять и освобождать пространство памяти.
  • Управление безопасностью/конфиденциальностью. Операционная система также обеспечивает конфиденциальность с помощью паролей, чтобы неавторизованные приложения не могли получить доступ к программам или данным. Например, Windows использует проверку подлинности Kerberos для предотвращения несанкционированного доступа к данным.
  1. Пользователь
  2. Системные и прикладные программы
  3. Операционная система
  4. Оборудование

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

Рис. 1. Концептуальный вид компьютерной системы

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

  1. Он контролирует распределение и использование ресурсов вычислительной системы среди различных пользователей и задач.
  2. Он обеспечивает интерфейс между аппаратным обеспечением компьютера и программистом, который упрощает и делает возможным кодирование, создание и отладку прикладных программ.
  1. Предоставляет средства для создания и изменения программ и файлов данных с помощью редактора.
  2. Доступ к компилятору для перевода пользовательской программы с языка высокого уровня на машинный язык.
  3. Предоставить программу-загрузчик для перемещения скомпилированного программного кода в память компьютера для выполнения.
  4. Предоставьте подпрограммы, которые обрабатывают детали программирования ввода-вывода.
  • Компонент управления памятью, включающий буферизацию, кэширование и буферизацию.
  • Общий интерфейс драйвера устройства.

Драйверы для определенных аппаратных устройств.

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

Компилятор —
Языки высокого уровня — примеры FORTRAN, COBOL, ALGOL и PL/I — обрабатываются компиляторами и интерпретаторами. Компилятор — это программа, которая принимает исходную программу на «языке высокого уровня» и создает соответствующую объектную программу. Интерпретатор — это программа, которая выполняет исходную программу, как если бы это был машинный язык. Одно и то же имя (FORTRAN, COBOL и т. д.) часто используется для обозначения как компилятора, так и связанного с ним языка.

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

На этом этапе возникает естественный вопрос: какой из двух описанных нами алгоритмов поиска кратчайших путей лучше подходит для вычисления кратчайших путей между всеми возможными парами 4 узлов в сети? Чтобы ответить на этот вопрос, сначала необходимо кратко обсудить тему алгоритмической сложности. «Совершенство» алгоритма во многом определяется его сложностью.

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

Рассмотрите, например, применение алгоритма 6.2 к случаю сети с n узлами. Каждый проход по шагу 2 алгоритма требует проверки и возможного обновления (n - 1) 2 элементов матрицы. (Помните, что нет необходимости проверять и обновлять элементы k-й строки и k-го столбца — см. также пример 2, — поскольку мы знаем, что эти элементы останутся неизменными.) Таким образом, каждый проход на шаге 2 требует ( n - 1) 2 сложения [для вычисления величин dk-1(i, k) + dk-1(k,j)], а также (n - 1) 2 сравнения между двумя числами. Точно так же шаг 3 алгоритма требует (n - 1) 2 сравнений на каждом проходе, тогда как шаг 4 требует одного сравнения (k с n), сложения (увеличения k на 1) и ветвления 5 (возврат к шагу 2). ). Таким образом, всего требуется 3(n - 1) 2 + 3 элементарных операции для каждого прохода алгоритма. Поскольку всего имеется n проходов, мы заключаем, что количество элементарных операций T, необходимых для того, чтобы алгоритм 6.2 дал желаемые ответы, равно

T=3n(n - 1) 2 + 3n = 3n 3 - 6n 2 + 6n

Теперь, когда n увеличивается, значение T в значительной степени определяется членом 3n 3. Более того, когда мы сравниваем производительность этого алгоритма с производительностью других алгоритмов при больших значениях n, действительно имеет значение член n > 3 — в конце концов, коэффициент 3 незначителен ввиду десятикратного увеличения скорости компьютеров, которые происходят каждые несколько лет и ввиду различий в скорости между различными типами компьютеров. Таким образом, мы говорим, что «сложность алгоритма 6.2 пропорциональна n 3 » или, проще говоря, что «алгоритм 6.2 равен 6 O(n 3 )». Обратите внимание, что сложность алгоритма измеряется по отношению к размеру входных данных алгоритма (т. е. количеству n). Наконец, при допущении, что каждая элементарная операция занимает примерно одну единицу времени (будь то 10 -9 секунд или 10 -3 секунд в зависимости от скорости компьютера), мы также говорим, что «Алгоритм 6.2 требует O(n 3 ) времени. ."

Теперь рассмотрим случай, когда сеть с n узлами полностью связана (т. е. можно перейти от любого узла к любому другому узлу напрямую, минуя какие-либо промежуточные узлы).< /p>

Упражнение 6.1 Покажите, что если алгоритм 6.1 используется с такой сетью для поиска кратчайшего пути от любого данного исходного узла ко всем другим узлам (как в примере 1), алгоритм требует O(n 2 ) времени.
< /p>

Из этого упражнения следует, что, поскольку алгоритм 6.1 необходимо повторить n раз (по одному разу для каждого возможного исходного узла), чтобы найти кратчайшие пути между всеми возможными парами узлов, требуется время O(n 3 ), чтобы найти все кратчайшие пути через повторное использование алгоритма 6.1.

Обратите внимание, что случай полностью подключенной сети на самом деле является наихудшим случаем с точки зрения алгоритма 6.1. Ведь можно найти и другие экземпляры сетей, для которых поиск всех кратчайших путей по алгоритму может занять меньше времени O(n 3 ). Например, если сеть представляет собой, скажем, неориентированное дерево, так что между каждой парой узлов существует только один путь, а матрица расстояний [d(i, j)] симметрична, алгоритм 6.1 можно скорректировать таким образом. что для этого требуется гораздо меньше времени, чем O(n 3 ). 7 Этот пример должен пояснить, что мы подразумеваем под наихудшими условиями.

Мы заключаем, что сложность алгоритмов 6.1 и 6.2 одинакова, O(n 3 ), в наихудших условиях. Таким образом, согласно нашему определению, алгоритмы 6.1 и 6.2 одинаково "хороши", хотя верно то, что алгоритм 6.1 является более гибким и поэтому может лучше использовать преимущества специальных сетевых структур. 8 (С другой стороны, алгоритм 6.2 легче программировать на компьютере.)

Компьютерщики обычно подразделяют алгоритмы на две большие категории. Полиномиальные алгоритмы — это алгоритмы, сложность которых пропорциональна или ограничена полиномиальной функцией размера входных данных. Экспоненциальные (или неполиномиальные) алгоритмы — это алгоритмы, которые при достаточно больших размерах входных данных нарушают все полиномиальные границы. Например, алгоритмы, сложность которых равна O(n 3 ) или O(n 5 .), очевидно, являются полиномиальными; таков алгоритм со сложностью, скажем, O(n · log2 n), поскольку величина n · log2 n ограничена сверху величиной n 2 . С другой стороны, алгоритмы, которые являются 0(2 n ) или O(kn ) --- где k -- константа -- или O(n!) -- помнят приближение Стирлинга для факториалов -- или O(n log2n ) являются экспоненциальными.

Полиномиальные алгоритмы считаются "хорошими", а экспоненциальные - "плохими". Термины «эффективный» и «неэффективный» чаще всего используются для обозначения «хорошего» и «плохого» соответственно. Хотя алгоритм за O(2 n ) может завершаться быстрее, чем алгоритм за O(n 5 ) для малых значений n, можно найти входной размер n0, такой, что если nn0, первый алгоритм завершится после второго.

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

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

Позже в этой главе у нас будет возможность использовать все термины, введенные в этом разделе.

4 Для алгоритма 6.1, как мы уже отмечали, это подразумевает его многократное применение, делающее каждый узел графа последовательно исходным узлом.

5 На последнем проходе требуется только сравнение и переход к STOP

6 Не путайте это с обозначением o(.), которое использовалось в главе 2 в связи с определением бесконечно малых членов процесса Пуассона.

7 Обратите внимание, что это не верно для алгоритма 6.2, как описано здесь. Это всегда требует O(n 3 ) времени, независимо от структуры сети.

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

Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.

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

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

Как Интернет перемещает информацию между компьютерами? Какая операционная система сделана Microsoft? Войдите в этот тест и проверьте свои знания о компьютерах и операционных системах.

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

Компьютеры приобрели более мощные операционные системы в 1960-х годах с появлением разделения времени, которое требовало системы для управления несколькими пользователями, совместно использующими процессорное время и терминалы. Двумя ранними системами разделения времени были CTSS (совместимая система разделения времени), разработанная в Массачусетском технологическом институте, и базовая система Дартмутского колледжа, разработанная в Дартмутском колледже. Другие многопрограммные системы включали Atlas в Манчестерском университете, Англия, и IBM OS/360, вероятно, самый сложный программный пакет 1960-х годов. После 1972 года система Multics для компьютера General Electric Co. GE 645 (а позже и для компьютеров Honeywell Inc.) стала самой сложной системой с большинством возможностей мультипрограммирования и разделения времени, которые позже стали стандартными.

У мини-компьютеров 1970-х годов был ограниченный объем памяти и требовались операционные системы меньшего размера. Самой важной операционной системой того периода была UNIX, разработанная AT&T для больших миникомпьютеров как более простая альтернатива Multics. Он стал широко использоваться в 1980-х годах, отчасти потому, что он был бесплатным для университетов, а отчасти потому, что он был разработан с набором инструментов, которые были мощными в руках опытных программистов. Совсем недавно Linux, версия UNIX с открытым исходным кодом, разработанная частично группой под руководством финского студента информатики Линуса Торвальдса и частично группой под руководством американского программиста Ричарда Столлмана, стала популярной как на персональных компьютерах, так и на большие компьютеры.

Помимо таких систем общего назначения, на небольших компьютерах работают специальные операционные системы, которые управляют сборочными линиями, самолетами и даже бытовой техникой. Это системы реального времени, предназначенные для обеспечения быстрого реагирования на датчики и использования их входных данных для управления механизмами. Операционные системы также были разработаны для мобильных устройств, таких как смартфоны и планшеты. iOS от Apple Inc., работающая на iPhone и iPad, и Android от Google Inc. — две известные мобильные операционные системы.

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

Современные операционные системы для персональных компьютеров обычно имеют графический интерфейс пользователя (GUI). Графический интерфейс пользователя может быть неотъемлемой частью системы, как в старых версиях Mac OS от Apple и ОС Windows от Microsoft Corporation; в других случаях это набор программ, которые зависят от базовой системы, как в системе X Window для UNIX и Mac OS X от Apple.

Операционные системы также предоставляют сетевые службы и возможности обмена файлами — даже возможность совместного использования ресурсов между системами разных типов, такими как Windows и UNIX. Такое совместное использование стало возможным благодаря внедрению сетевых протоколов (правил связи), таких как TCP/IP в Интернете.

Отображение формул: ? Математические формулы были закодированы как MathML и отображаются в этой версии HTML с использованием MathJax для улучшения их отображения. Снимите флажок, чтобы отключить MathJax. Для этой функции требуется Javascript. Нажмите на формулу, чтобы увеличить ее.

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

1. Введение

Системы на кристалле (SoC), которые используются для запуска современных сложных приложений, должны иметь гетерогенную структуру элементов обработки, памяти и связи, чтобы обеспечить высокую производительность, энергоэффективность и низкую цену. Из-за экспоненциального роста сложности разнородных систем предполагается, что производительность разработчиков должна возрасти в десять раз, чтобы успешно соответствовать системным требованиям и ограничениям при тех же временных и стоимостных ограничениях [1]. Ключом к успеху является принятие правильных решений на ранних стадиях проектирования, до сборки первого прототипа. Повышение уровня абстракции на всех этапах проектирования позволяет отделить вычисления от обмена данными и использовать отдельные модели приложений и платформ. Это приводит к более эффективному подходу к исследованию проектного пространства (DSE) [2]. Ранняя оценка времени является одним из наиболее важных этапов DSE. В последние годы традиционный подход с использованием высокоточного симулятора набора инструкций (ISS) был заменен высокоуровневыми моделями оценки времени, которые позволяют получать оценки на ранних стадиях проектирования [3–10].

В этой статье мы предлагаем метод оценки времени выполнения приложения на уровне исходного кода, основанный на концепции элементарных операций, которая позволяет улавливать архитектурные эффекты и влияние оптимизации компилятора. Метод оценки состоит из двух этапов: анализ и оценка. На этапе анализа профилируются конфигурации приложений и платформ, рассматриваемые для проектирования. Профиль приложения получается путем преобразования исходного кода приложения в список элементарных операций, структурированных в виде циклов, ветвей и последовательностей. Он не зависит от платформы и уровня оптимизации компилятора, поэтому один и тот же профиль приложения можно использовать для оценки времени выполнения на любой платформе. Профиль платформы получается путем выполнения теста под названием «ELOPS тест» 1 для каждой конфигурации платформы и для каждого уровня оптимизации компилятора отдельно. Этот бенчмарк был специально создан в рамках данного исследования для измерения времени выполнения элементарных операций на реальных платформах.Результаты выполнения тестов для каждой конфигурации платформы составляют профиль платформы для соответствующей конфигурации. На этапе оценки предлагаемый алгоритм оценки времени объединяет профили приложения и целевой платформы для получения оценки времени.

Точность нашего подхода оценивается с использованием алгоритма сжатия изображений JPEG и алгоритма Advanced Encryption Standard (AES) на нескольких конфигурациях оборудования на базе двух процессоров RISC: ARM A9 и Microblaze, специально созданных для платформы Xilinx Zynq ZC706. Достигнутая точность (то есть частота ошибок) аналогична самым точным современным методам оценки времени на уровне источника. Сильной стороной является значительное сокращение времени и усилий, необходимых для получения результатов, благодаря возможности повторного использования профилей приложений и платформ. Кроме того, предлагаемый метод можно легко масштабировать для систем с сотней и более элементов одного типа аналогично методу, продемонстрированному в [11].

Остальная часть этого документа организована следующим образом. В разделе 2 представлен обзор современного уровня техники в области высокоуровневой оценки времени. Предлагаемый метод оценки времени на уровне источника представлен в разделе 3. Поток оценки времени приложения описан в разделе 4. Тестовые примеры, использованные для оценки предлагаемого метода, приведены в первой части раздела 5. Результаты проведенных эксперименты представлены и обсуждаются в остальной части раздела.

2. Похожие работы

Авторы в [ 12 ] предлагают инфраструктуру моделирования на уровне источника, которая обеспечивает полный диапазон оценки производительности, энергопотребления, надежности, мощности и температуры. Для временного моделирования они опираются на свою предыдущую работу [3], в которой используется подход, основанный на моделировании, с обратной аннотацией на уровне промежуточного представления (IR). Моделирование эффектов конвейера на границах основных блоков требует дополнительного попарного моделирования блоков для каждой возможной комбинации пар блоков в эталоне с точностью до цикла. Они рассматривают высокоуровневую модель кэша, реконструируя целевые трассировки памяти исключительно на основе информации IR и отладчика. Моделирование выполнения всего приложения выполняется с использованием System C и моделирования на уровне транзакций (TLM) [13] с ошибкой оценки менее 10%. Симуляция эффектов конвейера на границах основных блоков требует дополнительного попарного моделирования блоков для каждой возможной комбинации пар блоков.

Другие подходы используют машинное обучение и математические модели для ранней оценки времени. Авторы в [8] используют искусственные нейронные сети (ИНС). ANN дает оценку времени на основе времени выполнения и общего количества инструкций каждого типа. Ошибка оценки составляет около 17%, но метод гораздо более гибкий по сравнению с методами моделирования и обеспечивает более высокий уровень повторного использования результатов. После начального периода обучения результаты оценки получаются быстро.

Методы, представленные в [9] и [10], основаны на линейной регрессии и ИНС с более высокой частотой ошибок — около 20 %. Авторы в [ 14 ] используют метод регрессии на основе дерева моделей в качестве предпочтительного метода машинного обучения.

Авторы в [ 11 , 15 , 16 ] предлагают гибридные методы: сначала моделирование используется для получения времени выполнения каждой процедуры на каждом типе элемента обработки, затем аналитические методы используются для учета эффектов кэширования и связи.

В [17] авторы используют линейную регрессию для расчета времени, но они используют набор специально созданных обучающих программ для определения стоимости инструкций абстрактной машины. Авторы пытаются уловить эффекты оптимизации кэша, конвейера и кода, создавая примеры с более длинными последовательностями инструкций и циклами. Однако, поскольку они полагаются на IR, они сталкиваются с проблемами при внедрении оптимизаций кода, поскольку виртуальные инструкции в переводе программы обучения не полностью соответствуют скомпилированной версии.

Концепция элементарных операций впервые была представлена ​​в [18] в попытке охарактеризовать поведение платформы, не имея точной аппаратной модели. В этом предварительном методе ранней оценки времени отсутствовала поддержка оптимизации компилятора и способность оценивать задачи приложения, зависящие от ввода. В этой статье мы расширяем нашу предыдущую работу и представляем улучшенный метод.

3. Подход к элементарным операциям

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

3.1. Классификация элементарных операций

Мы предлагаем многоуровневую схему классификации элементарных операций.Верхний уровень содержит четыре класса операций: INTEGER, FLOATING POINT, LOGIC и MEMORY. Второй уровень классификации основан на происхождении операндов (т.е. расположении в памяти): локальные, глобальные или параметры процедуры. Это связано с разницей в локальности из-за того, как компилятор реализует операнды, хранящиеся в разных частях пространства памяти. Ожидается, что каждая группа будет демонстрировать различное поведение во времени: локальные переменные, которые интенсивно используются, почти всегда находятся в кеше, в то время как глобальные операнды и операнды параметров должны загружаться с произвольного адреса, что может привести к промаху кеша. Третий уровень классификации — по типу операнда: (1) скалярные переменные и (2) массивы одного или нескольких измерений. Указатели рассматриваются как скалярные переменные, когда значение указателя задается с помощью одной переменной, или как массивы, когда значение указателя задается с помощью нескольких переменных.

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

Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.

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

Далее следует краткое описание цифровых компьютеров. Полное описание см. в см. информатике: основные компьютерные компоненты.

Как Интернет перемещает информацию между компьютерами? Какая операционная система сделана Microsoft? Войдите в этот тест и проверьте свои знания о компьютерах и операционных системах.

Функциональные элементы

Типичная цифровая компьютерная система имеет четыре основных функциональных элемента: (1) оборудование ввода-вывода, (2) основную память, (3) блок управления и (4) арифметико-логическое устройство. Любое из ряда устройств используется для ввода данных и программных инструкций в компьютер и для получения доступа к результатам операции обработки. Общие устройства ввода включают клавиатуры и оптические сканеры; устройства вывода включают принтеры и мониторы. Информация, полученная компьютером от своего блока ввода, сохраняется в основной памяти или, если не для непосредственного использования, во вспомогательном запоминающем устройстве. Блок управления выбирает и вызывает инструкции из памяти в соответствующей последовательности и передает соответствующие команды соответствующему блоку. Он также синхронизирует различные рабочие скорости устройств ввода и вывода со скоростью арифметико-логического устройства (ALU), чтобы обеспечить правильное перемещение данных по всей компьютерной системе. АЛУ выполняет арифметические и логические алгоритмы, выбранные для обработки входящих данных, с чрезвычайно высокой скоростью — во многих случаях за наносекунды (миллиардные доли секунды). Основная память, блок управления и АЛУ вместе составляют центральный процессор (ЦП) большинства цифровых компьютерных систем, а устройства ввода-вывода и вспомогательные запоминающие устройства составляют периферийное оборудование.

Разработка цифрового компьютера

Блез Паскаль из Франции и Готфрид Вильгельм Лейбниц из Германии изобрели механические цифровые вычислительные машины в 17 веке. Однако обычно считается, что английский изобретатель Чарльз Бэббидж создал первый автоматический цифровой компьютер. В 1830-х годах Бэббидж разработал свою так называемую аналитическую машину, механическое устройство, предназначенное для объединения основных арифметических операций с решениями, основанными на собственных вычислениях. Планы Бэббиджа воплотили в себе большинство фундаментальных элементов современного цифрового компьютера. Например, они призывали к последовательному управлению, т. е. программному управлению, которое включало ветвление, циклирование, а также арифметические и запоминающие устройства с автоматической распечаткой.Однако устройство Бэббиджа так и не было завершено и было забыто до тех пор, пока его труды не были заново открыты более века спустя.

Огромное значение в эволюции цифрового компьютера имели работы английского математика и логика Джорджа Буля. В различных эссе, написанных в середине 1800-х годов, Буль обсуждал аналогию между символами алгебры и символами логики, используемыми для представления логических форм и силлогизмов. Его формализм, работающий только с 0 и 1, стал основой того, что сейчас называется булевой алгеброй, на которой основаны теория и процедуры компьютерного переключения.

Джону В. Атанасову, американскому математику и физику, приписывают создание первого электронного цифрового компьютера, который он построил с 1939 по 1942 год с помощью своего аспиранта Клиффорда Э. Берри. Конрад Цузе, немецкий инженер, фактически изолированный от других разработок, в 1941 году завершил строительство первой действующей вычислительной машины с программным управлением (Z3). В 1944 году Ховард Эйкен и группа инженеров корпорации International Business Machines (IBM) завершили работу над Harvard Mark I – машиной, операции обработки данных которой контролировались главным образом электрическими реле (коммутационными устройствами).

Клиффорд Э. Берри и компьютер Атанасова-Берри, или ABC, c. 1942 г. ABC, возможно, был первым электронным цифровым компьютером.

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

В 1946 году Дж. Преспер Эккерт и Джон У. Мочли из Пенсильванского университета сконструировали ENIAC (аббревиатура от eэлектронный nмерический i). интегратор ии cкомпьютер), цифровая машина и первый электронный компьютер общего назначения. Его вычислительные возможности были заимствованы у машины Атанасова; оба компьютера включали электронные лампы вместо реле в качестве активных логических элементов, что привело к значительному увеличению скорости работы. Концепция компьютера с хранимой программой была представлена ​​в середине 1940-х годов, а идея хранения кодов инструкций, а также данных в электрически изменяемой памяти была реализована в EDVAC (electronic, d создать vпеременный аавтоматический cкомпьютер).

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

Транзистор был изобретен в 1947 году в Bell Laboratories Джоном Бардином, Уолтером Х. Браттейном и Уильямом Б. Шокли.

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

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

К началу 1980-х интегральные схемы продвинулись до очень крупномасштабной интеграции (СБИС). Этот дизайн и технология производства значительно увеличили плотность схем микропроцессора, памяти и вспомогательных микросхем, т. Е. Те, которые служат для сопряжения микропроцессоров с устройствами ввода-вывода. К 1990-м годам некоторые схемы СБИС содержали более 3 миллионов транзисторов на кремниевой микросхеме площадью менее 0,3 квадратных дюйма (2 квадратных см).

Цифровые компьютеры 1980-х и 90-х годов, использующие технологии БИС и СБИС, часто называют системами четвертого поколения. Многие микрокомпьютеры, произведенные в 1980-х годах, были оснащены одним чипом, на котором были интегрированы схемы процессора, памяти и функций интерфейса. (См. также суперкомпьютер.)

Использование персональных компьютеров выросло в 1980-х и 90-х годах. Распространение Всемирной паутины в 1990-х годах привело миллионы пользователей к Интернету, всемирной компьютерной сети, и к 2019 году около 4,5 миллиардов человек, более половины населения мира, имели доступ к Интернету. Компьютеры становились меньше и быстрее, и в начале 21 века они были широко распространены в смартфонах, а затем и в планшетных компьютерах.

Редакторы Британской энциклопедии Эта статья была недавно отредактирована и обновлена ​​Эриком Грегерсеном.

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