Часть памяти компьютера, используемая для хранения программ и данных при решении задачи

Обновлено: 21.11.2024

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

Почему так важна компьютерная память (ОЗУ)?

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

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

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

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

Что такое скорость и задержка ОЗУ?

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

Что делает ОЗУ (память)?

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

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

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

Что использует оперативную память?

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

Нужно ли вам обновить оперативную память?

Являетесь ли вы геймером, дизайнером или просто хотите ускорить свой персональный компьютер, увеличение объема оперативной памяти — это простой и легкий способ повысить производительность вашей системы. Чтобы определить правильный тип памяти для вашего компьютера, используйте Crucial® Advisor™ или System Scanner. Эти инструменты помогут вам определить, какие модули памяти совместимы с вашим компьютером, а также выбрать параметры, соответствующие вашим требованиям к скорости и бюджету.

© Micron Technology, Inc., 2017. Все права защищены. Информация, продукты и/или технические характеристики могут быть изменены без предварительного уведомления. Ни Crucial, ни Micron Technology, Inc. не несут ответственности за упущения или ошибки в типографике или фотографии.Micron, логотип Micron, Crucial и логотип Crucial являются товарными знаками или зарегистрированными товарными знаками Micron Technology, Inc. Все другие товарные знаки и знаки обслуживания являются собственностью соответствующих владельцев.

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

Видео: что такое программирование?

Компьютерное оборудование

  1. Центральный процессор (ЦП)
  2. Основная память (оперативная память или ОЗУ)
  3. Дополнительные устройства хранения
  4. Устройства ввода
  5. Устройства вывода

ЦП

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

Цикл выборки/декодирования/выполнения

  • fetch — получение следующей инструкции из основной памяти.
  • декодировать — определить, какую инструкцию выполнять.
  • выполнить — выполнить инструкцию.

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

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

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

Вы узнаете подробности о том, как ЦП обрабатывают инструкции в CS 271, Компьютерная архитектура и язык ассемблера.

Основная память

Основная память или ОЗУ используется для хранения программы во время ее выполнения и для хранения данных, с которыми работает программа.

Сведения об оперативной памяти

  • ЦП может быстро получить доступ к любому месту в ОЗУ.
  • ОЗУ называется энергозависимой памятью. В отличие от постоянного хранилища, когда компьютер выключается или когда программа завершает выполнение, значения, хранящиеся в ОЗУ, стираются.
  • ОЗУ делится на единицы хранения, называемые байтами. Байт — это последовательность из восьми битов.
  • Бит — это наименьший элемент ОЗУ, в нем хранится двоичная цифра, 0 или 1. Каждая программа и каждое значение данных на вашем компьютере хранится в виде последовательностей нулей и ls.

Дополнительное хранилище

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

Как и в основной памяти, во вторичном хранилище также хранится информация в виде последовательностей нулей и единиц в виде битов и байтов.

Устройства ввода

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

Устройства вывода

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

Видео: аппаратное и программное обеспечение

Программы и языки программирования

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

Алгоритмы

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

По мере увеличения сложности задач важно разрабатывать алгоритмы, которые будут эффективными (т. е. быстрыми) и правильными в том смысле, что они будут давать указанный результат для любых допустимых входных данных. На курсе CS 325 "Анализ алгоритмов" вы узнаете о методах анализа сложности и доказательства правильности.

Превращение алгоритмов в программы

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

Машинный код, язык ассемблера и компиляторы

ЦП компьютера выполняет инструкции вашей программы.Однако пока вы пишете программу на таком языке, как C++, процессор компьютера может следовать только инструкциям, закодированным как последовательность Os и s. Программный компилятор — это специальная программа, которая преобразует операторы, написанные на языке программирования, в двоичную форму (Os и s>, называемую машинным кодом. Поскольку нам трудно распознать последовательности 0 и 1, существует низкоуровневая (близкая к аппаратной ) язык программирования, называемый языком ассемблера, который использует короткие сокращения и шаблоны для описания того, что должен делать ЦП. Например, оператор ассемблера "MOV AL, 61h;" означает копирование следующего значения (61h, шестнадцатеричное представление 97) в ячейку памяти " АЛ".

Вы узнаете гораздо больше о машинном коде и языке ассемблера в CS 271, Архитектура компьютера и язык ассемблера.

Языки высокого уровня

В этом классе вы изучите C++, язык высокого уровня. Языки высокого уровня — это компьютерные языки, которые скрывают многие низкоуровневые детали компьютерной системы и, как правило, используют более естественные слова и символы по сравнению со словами, такими как «MOV», на языке ассемблера, который является языком низкого уровня.

C++ — один из многих языков высокого уровня. Чтобы увидеть текущую популярность всех компьютерных языков, перейдите в индекс TIOBE.

Исходный код, объектный код и исполняемый код

Исходный код

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

Преобразование исходного кода в исполняемый код

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

Во время преобразования исходного кода в исполняемый файл компилятор C++ создаст объектный код.

Исходный код преобразуется компилятором в так называемый объектный код. Объектный код программы на C++ сохраняется в файлах с суффиксом .o или .obj. На последнем этапе, называемом связыванием, объектные файлы объединяются с любыми библиотечными подпрограммами (подпрограммами, предоставленными языком для использования вами) для создания окончательного исполняемого файла с расширением .exe.

В зависимости от того, как вы компилируете свою программу, вы можете увидеть или не увидеть различные этапы преобразования исходных файлов в исполняемый файл. Например, во многих IDE (интегрированных средах разработки, таких как Visual Studio, Code:: Blocks или XCode) промежуточные шаги выполняются автоматически, поэтому вы можете нажать кнопку «сборка», и исполняемый файл будет создан.

Из чего состоит программа?

Языковые элементы

Большинство языков программирования включают следующие элементы.

Ключевые слова

Ключевые слова – это слова, имеющие особое значение в языке. Их можно использовать только по прямому назначению. Также известны как зарезервированные слова.

Определяемые программистом идентификаторы

Идентификаторы, определяемые программистом, — это слова, которые вы выбираете как программист для определения переменных или процедур программирования.

Операторы

Операторы выполняют операции над одним или несколькими операндами. Операнд — это часть данных. Различные арифметические символы, такие как +, * и /, являются примерами операторов.

Пунктуация

Знаки препинания отмечают начало или конец утверждения или отдельных элементов в списке.

Синтаксис

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

Специфика C++. Вы начнете изучать элементы языка, характерные для C++, в главе 2.

Строки и операторы

Мы часто думаем, что программы состоят из строк и операторов. Строка — это всего лишь одна строка в программе. Вы можете отображать номера строк в большинстве редакторов исходного кода IDE. В Visual Studio 2013 их необходимо включить, поскольку по умолчанию они отключены. Вы часто будете видеть ссылки на номера строк при компиляции программы и возникновении ошибки.

На снимке экрана показана программа с ошибкой. Когда программа была скомпилирована, выходные данные (серые окна выше) включали «source.cpp(B)», что указывало на то, что проблема была в строке 8 файла с именем source. цена за тысячу показов

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

Переменные

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

Ввод и вывод

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

Во многих, если не во всех заданиях CS 161, вы будете направлять вывод программы на консоль. Вы не часто видите вывод консоли, если запускаете приложения в Windows или OS X, потому что эти типы прикладных программ используют графические пользовательские интерфейсы (GUI). Однако программирование с графическим интерфейсом добавляет гораздо больше работы по созданию программы, и наша работа в CS 161 состоит в том, чтобы научить вас основам программирования, поэтому мы будем придерживаться консольного вывода.

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

Активность

Выберите хотя бы одно занятие, которое учащиеся могут активно вовлечь в изучение материала. Чем больше, тем лучше!

Просмотреть

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

Центральный процессор (ЦП) направляет компьютер на различные этапы решения проблемы.

Связанные термины:

Скачать в формате PDF

Об этой странице

Адаптация и оценка симплексного алгоритма для архитектуры потока данных

Урош Чибей, Юрий Михелич, Достижения в области компьютеров, 2017

2.2 Вид программиста

Чтобы программист мог разработать законченную программу, необходимо написать три компонента.

обычно написанный на языке программирования C, код ЦП управляет выполнением и использует DFE в качестве процессора, вызывая подходящие функции, предоставляемые компилятором Maxeler.

Каждое ядро ​​реализует определенную функциональность и примерно соответствует абстракции функции. Он имеет набор входных потоков и набор выходных потоков.

Менеджер — это компонент, который соединяет потоки данных от ЦП к ядрам-получателям и наоборот. Он устанавливает соединения между ядрами и LMem, а также связывает ядра между собой. Диспетчер также создает интерфейсы, с помощью которых код ЦП взаимодействует с DFE.

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

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

Схема этой архитектуры представлена ​​на рис. 1.

Рис. 1 . Схематический обзор компонентов системы потока данных. серая рамка обозначает микросхему FPGA. Взгляд программиста на архитектуру показан в виде файлов, которые необходимо реализовать для каждой программы, файл .maxj написан на языке MaxJ, тогда как поток управления обычно написан на C или C++, но поддерживаются и другие языки. .

КОМПЬЮТЕРНЫЙ ДИЗАЙН

Доминик Росато, Дональд Росато, Дизайн изделий из пластмассы, 2003 г.

Центральный процессор

Центральный процессор компьютера (ЦП) — это часть компьютера, которая извлекает и выполняет инструкции. Процессор, по сути, является мозгом CAD-системы. Он состоит из арифметико-логического блока (АЛУ), блока управления и различных регистров. Центральный процессор часто называют просто процессором. АЛУ выполняет арифметические операции, логические операции и связанные с ними операции в соответствии с инструкциями программы.

Блок управления управляет всеми операциями ЦП, включая операции АЛУ, перемещение данных внутри ЦП, а также обмен данными и управляющими сигналами через внешние интерфейсы (системную шину). Регистры — это быстродействующие блоки внутренней памяти ЦП. Некоторые регистры видны пользователю; то есть доступный для программиста через набор машинных инструкций. Другие регистры предназначены исключительно для ЦП в целях управления. Внутренние часы синхронизируют все компоненты ЦП. Тактовая частота (количество тактовых импульсов в секунду) измеряется в мегагерцах (МГц) или миллионах тактовых импульсов в секунду.Тактовая частота, по сути, определяет, насколько быстро ЦП обрабатывает инструкции.

Оборудование

Центральный процессор управляет всем. Он извлекает программные инструкции по своей шине «на стороне инструкций» (IS), считывает данные по своей шине «на стороне данных» (DS), выполняет инструкции и записывает результаты на шину DS. ЦП может работать на частоте SYSCLK до 80 МГц, что означает, что он может выполнять одну инструкцию каждые 12,5 нс. ЦП способен умножать 32-разрядное целое число на 16-разрядное целое число за один цикл или 32-разрядное целое число на 32-разрядное целое число за два цикла. Блока с плавающей запятой (FPU) нет, поэтому вычисления с плавающей запятой выполняются программными алгоритмами, что делает операции с плавающей запятой намного медленнее, чем вычисления с целыми числами.

ЦП представляет собой ядро ​​микропроцессора MIPS32® M4K®, лицензированное компанией Imagination Technologies. ЦП работает при напряжении 1,8 В (обеспечиваемом стабилизатором напряжения, встроенным в PIC32, поскольку он используется на плате NU32). Контроллер прерываний, обсуждаемый ниже, может уведомлять ЦП о внешних событиях.

Встроенные процессоры

Внутренние шины ЦП

Шины ЦП — это механизмы, соединяющие другие компоненты ЦП: АЛУ, ЦП и регистры (см. рис. 4-22). Шины — это просто провода, которые соединяют между собой различные другие компоненты ЦП. Провод каждой шины обычно делится на логические функции, такие как данные (которые переносят данные в двух направлениях между регистрами и АЛУ), адрес (который переносит расположение регистров, содержащих данные для передачи), управление (переносит управление информацию о сигналах, такую ​​как временные и управляющие сигналы, между регистрами, ALU и CU) и т. д.

Рисунок 4-22. Ядро и шины PowerPC. [15]

В ядре PowerPC есть управляющая шина, по которой управляющие сигналы передаются между АЛУ, CU и регистрами. То, что PowerPC называет «исходными шинами», — это шины данных, передающие данные между регистрами и АЛУ. Существует дополнительная шина, называемая обратной записью, которая предназначена для обратной записи данных, полученных с исходной шины, непосредственно обратно из модуля загрузки/сохранения в фиксированные регистры или регистры с плавающей запятой.

Примечание. Во избежание дублирования автобусы будут более подробно обсуждаться в главе 7 .

Микрокомпьютерная аппаратура и управление

Чтение/запись памяти

ЦП всегда контролирует направление потока данных в базе данных, поскольку, хотя он и является двунаправленным, данные могут перемещаться только в одном направлении за раз. ЦП выдает специальный сигнал управления чтением/записью (R/W) (рис. 3.2), который активирует схемы в памяти, определяющие направление потока данных. Например, когда линия чтения/записи (R/W) имеет высокий уровень, ЦП передает информацию из ячейки памяти в ЦП.

Временная диаграмма операции чтения из памяти показана на рис. 3.3.

Рис. 3.3. Время чтения/записи.

Предположим, что компьютеру была дана инструкция прочитать данные из ячейки памяти номер 10. Чтобы выполнить операцию чтения, ЦП переводит линию чтения/записи в высокий уровень, чтобы активировать схему памяти при подготовке к операции чтения. Практически одновременно на АБ размещается адрес для местоположения 10 («адрес действителен» на рис. 3.3). В память АБ отправляется число 10 в 16-битном двоичном коде (0000 0000 0000 1010). Двоичные электрические сигналы, соответствующие 10, управляют определенными цепями в памяти, чтобы заставить двоичные данные в этом месте быть помещенными в БД. ЦП имеет внутренний регистр, который активируется во время этой операции чтения для приема и сохранения данных. Затем данные обрабатываются ЦП во время следующего цикла работы в соответствии с соответствующей инструкцией.

Аналогичная операция выполняется всякий раз, когда ЦП должен отправить данные из одного из своих внутренних регистров в память, что является операцией «записи». В этом случае линия R/W будет установлена ​​на логический уровень, противоположный операции чтения (т.е. низкий в данном примере). Во время операции записи отправляемые данные помещаются в БД одновременно с адресом назначения в АВ. Эта операция перенесет данные из источника ЦП в место назначения, которым может быть место в памяти в ОЗУ или внешнее устройство (как будет объяснено позже).

Компьютерные системы

1.3.1 Работа системы

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

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

Процессор

ХАРВИ М. ДЕЙТЕЛЬ, БАРБАРА ДЕЙТЕЛЬ, Введение в обработку информации, 1986 г.

Сводка издателя

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

Управление энергопотреблением

5.15.2.4.2.1 Блок процессора

Это центральный процессор (ЦП) ПЛК, то есть микропроцессор по конструкции и функциональным возможностям. Основная функция этого блока состоит в том, чтобы воспринимать входные значения через свои модули ввода/вывода, генерировать управляющие сигналы в соответствии с входными сигналами и предопределенной инструкцией (хранящейся в блоке памяти в виде программы). Затем обработанное решение передается на устройства вывода, подключенные к модулям ввода/вывода, для обновления выходных переменных [51]. Типичный цикл процесса ЦП показан на рис. 40, демонстрирующем основную идею функции процесса. Время одного цикла выполнения программы называется «время сканирования». Типичные значения времени сканирования могут составлять всего 1 м/с. Входные и выходные значения обычно хранятся в единице памяти за цикл или несколько его кратных [53] .

Рис. 40 . Рабочий цикл центрального процессора (ЦП) программируемого логического контроллера (ПЛК).

Беспроводная МЭМС для носимых сенсорных сетей

5.2.2.2 Блок обработки

Рабочие процедуры промышленной системы управления

(1) адресные пространства PCI

ЦП и все устройства PCI должны иметь доступ к общей памяти. Драйверы устройств управляют устройствами PCI и передают информацию между ними, используя эту память. Как правило, эта разделяемая память содержит регистры управления и состояния устройства, которые используются для управления устройством и чтения его состояния. Например, драйвер устройства PCI SCSI может прочитать свой регистр состояния, чтобы узнать, готово ли устройство к записи блока информации, или он может записать в управляющий регистр, чтобы запустить устройство после его включения.

Системная память ЦП может использоваться для этой общей памяти, но в этом случае каждый раз, когда устройство PCI обращается к памяти, ЦП должен будет останавливаться, ожидая завершения. Доступ к памяти обычно ограничивается одним системным компонентом за раз. Это замедлит работу системы. Это не позволяет периферийным устройствам системы бесконтрольно обращаться к основной памяти. Это было бы очень опасно; неисправное устройство может сделать систему очень нестабильной.

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

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

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

Сопутствующее понятие – это разработка конкретной структуры данных, которая позволяет алгоритму работать эффективно. Важность структур данных связана с тем фактом, что основная память компьютера (где хранятся данные) является линейной и состоит из последовательности ячеек памяти, последовательно пронумерованных 0, 1, 2,…. Таким образом, простейшая структура данных представляет собой линейный массив, в котором соседние элементы нумеруются последовательными целочисленными «индексами», а доступ к значению элемента осуществляется по его уникальному индексу. Массив можно использовать, например, для хранения списка имен, а эффективные методы необходимы для эффективного поиска и извлечения определенного имени из массива. Например, сортировка списка в алфавитном порядке позволяет использовать так называемый метод бинарного поиска, при котором оставшаяся часть списка для поиска на каждом шаге разрезается пополам. Этот метод поиска похож на поиск определенного имени в телефонной книге. Зная, что книга находится в алфавитном порядке, можно быстро перейти на страницу, близкую к странице, содержащей нужное имя. Для эффективной сортировки и поиска списков данных было разработано множество алгоритмов.

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

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

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

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

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

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