Анализ базовой аппаратной конфигурации компьютера

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.12.2014
Размер файла 429,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Подходы к архитектуре ПК

1.1 Архитектура фон Неймана

1.2 Гарвардская архитектура

2. Структура ПК

2.1 Системная плата (материнская плата)

2.1.1 Процессоры

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

2.1.3 Внешняя память

2.1.4 Интерфейс

2.1.5 Видеокарта (графическая карта)

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

Заключение

Список литературы

Введение

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

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

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

1. Подходы к архитектуре ПК

1.1 Архитектура фон Неймана

Архитектура фон Неймана (англ. von Neumann architecture) -- широко известный принцип совместного хранения программ и данных в памяти компьютера. Вычислительные системы такого рода часто обозначают термином «машина фон Неймана», однако, соответствие этих понятий не всегда однозначно. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных.

Наличие заданного набора исполняемых команд и программ было характерной чертой первых компьютерных систем. Сегодня подобный дизайн применяют с целью упрощения конструкции вычислительного устройства. Так, настольные калькуляторы, в принципе, являются устройствами с фиксированным набором выполняемых программ. Их можно использовать для математических расчётов, но невозможно применить для обработки текста и компьютерных игр, для просмотра графических изображений или видео. Изменение встроенной программы для такого рода устройств требует практически полной их переделки, и в большинстве случаев невозможно. Впрочем, перепрограммирование ранних компьютерных систем всё-таки выполнялось, однако требовало огромного объёма ручной работы по подготовке новой документации, перекоммутации и перестройки блоков и устройств и т. п. Всё изменила идея хранения компьютерных программ в общей памяти. Ко времени её появления использование архитектур, основанных на наборах исполняемых инструкций, и представление вычислительного процесса как процесса выполнения инструкций, записанных в программе, чрезвычайно увеличило гибкость вычислительных систем в плане обработки данных. Один и тот же подход к рассмотрению данных и инструкций сделал лёгкой задачу изменения самих программ.

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

Принципы фон Неймана

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

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

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

2. Программное управление ЭВМ. Работа ЭВМ контролируется программой, состоящей из набора команд. Команды выполняются последовательно друг за другом. Созданием машины с хранимой в памяти программой было положено начало тому, что мы сегодня называем программированием.

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

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

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

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

Машина фон Неймана

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

В соответствии с принципами фон Неймана компьютер состоит из арифметико-логического устройства -- АЛУ (англ. ALU, Arithmetic and Logic Unit), выполняющего арифметические и логические операции; устройства управления, предназначенного для организации выполнения программ; запоминающих устройств (ЗУ), в т.ч. оперативного запоминающего устройства (ОЗУ) и внешнего запоминающего устройства (ВЗУ); внешних устройств для ввода-вывода данных. Фон-неймановская архитектура компьютера считается классической, на ней построено большинство компьютеров. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных.

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

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

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

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

УУ управляет всеми частями компьютера. От управляющего устройства на другие устройства поступают сигналы «что делать», а от других устройств УУ получает информацию об их состоянии.

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

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

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

1.2 Гарвардская архитектура

Гарвардская архитектура -- архитектура ЭВМ, отличительным признаком которой является раздельное хранение и обработка команд и данных. Архитектура была разработана Говардом Эйкеном в конце 1930-х годов в Гарвардском университете.

Классическая гарвардская архитектура

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

Модифицированная гарвардская архитектура

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

Такой подход применяется в современных сигнальных процессорах. Еще дальше по пути уменьшения стоимости пошли при создании однокристалльных ЭВМ -- микроконтроллеров. В них одна шина команд и данных применяется и внутри кристалла.

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

Расширенная гарвардская архитектура

Часто требуется выбрать три составляющие : два операнда и инструкцию (в алгоритмах цифровой обработки сигналов это наиболее распространенная задача в БПФ и КИХ, БИХ фильтрах). Для этого существует кэш-память. В ней может храниться инструкция -- следовательно, обе шины остаются свободными и появляется возможность передать два операнда одновременно. Использование кэш-памяти вместе с разделёнными шинами получило название «Super Harvard Architecture» («SHARC») -- расширенная Гарвардская архитектура.

Примером могут служить процессоры «Analog Devices»: ADSP-21xx -- модифицированная Гарвардская Архитектура, ADSP-21xxx(SHARC) -- расширенная Гарвардская Архитектура.

Гибридные модификации с архитектурой фон-Неймана

Существуют гибридные модификации архитектур, сочетающие достоинства как Гарвардской, так и фон-Неймановской архитектур. Современные CISC-процессоры обладают раздельной кэш-памятью 1-го уровня для инструкций и данных, что позволяет им за один такт получать одновременно как команду, так и данные для её выполнения, то есть процессорное ядро, формально, является гарвардским, но с программной точки зрения выглядит как фон-Неймановское, что упрощает написание программ. Обычно в данных процессорах одна шина используется и для передачи команд, и для передачи данных, что упрощает конструкцию системы. Современные варианты таких процессоров могут иногда содержать встроенные контроллеры сразу нескольких разнотипных шин для работы с различными типами памяти -- например, DDR RAM и Flash. Тем не менее, и в этом случае шины, как правило, используются и для передачи команд, и для передачи данных без разделения, что делает данные процессоры еще более близкими к фон-Неймановской архитектуре при сохранении плюсов Гарвардской архитектуры.

2. Структура ПК

2.1 Системная плата (материнская плата)

Системная плата или на компьютерном жаргоне - материмнская пламта (англ. motherboard, MB, также используется название англ. mainboard -- главная плата; сленг. мама, мать, материнка) -- это сложная многослойная печатная плата, на которой устанавливаются основные компоненты персонального компьютера (центральный процессор, контроллер ОЗУ и собственно ОЗУ, загрузочное ПЗУ, контроллеры базовых интерфейсов ввода-вывода). Как правило, системная плата содержит разъёмы (слоты) для подключения дополнительных контроллеров, для подключения которых обычно используются шины USB, PCI и PCI-Express.

2.1.1 Процессоры

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

Процессор состоит из нескольких частей. Блок управления отвечает за вызов команд из памяти и определение их типа. Арифметико-логическое устройство выполняет арифметические операции (например, сложение) и логические операции (например, логическое И).

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

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

Рис. Схема устройства компьютера с одним центральным процессором и двумя устройствами ввода-вывода.

Устройство центрального процессора

Внутреннее устройство тракта данных типичного фон-неймановского процессора показано на рис. Тракт данных состоит из регистров (обычно от 1 до 32), АЛУ (арифметико-логического устройства) и нескольких соединяющих шин. Содержимое регистров поступает во входные регистры АЛУ, которые на рис. обозначены буквами А и В. В них находятся входные данные АЛУ, пока АЛУ производит вычисления. Тракт данных -- важная составная часть всех компьютеров, и мы обсудим его очень подробно.

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

Большинство команд можно разделить на две группы: команды типа регистр-память и типа регистр-регистр. Команды первого типа вызывают слова из памяти, помещают их в регистры, где они используются в качестве входных данных АЛУ. (?Слова? --это такие элементы данных, которые перемещаются между памятью и регистрами.) Словом может быть целое число. Устройство памяти мы обсудим ниже в этой главе. Другие команды этого типа помещают регистры обратно в память.

Рис. Тракт данных в обычной фон-неймановской машине

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

Выполнение команд

Центральный процессор выполняет каждую команду за несколько шагов:

1.Вызывает следующую команду из памяти и переносит ее в регистр команд.

2.Меняет положение счетчика команд, который после этого указывает на следующую команду.

3.Определяет тип вызванной команды.

4.Если команда использует слово из памяти, определяет, где находится это слово.

5.Переносит слово, если это необходимо, в регистр центрального процессора.

6.Выполняет команду.

7.Переходит к шагу 1, чтобы начать выполнение следующей команды.

Такая последовательность шагов (выборка -- декодирование -- выполнениекоманда;выборкакоманда;декодированиекоманда;исполнение) является основой работы всех компьютеров.

Описание работы центрального процессора можно представить в виде программы. В листинге приведена такая программа-интерпретатор на языке Java. В описываемом компьютере есть два регистра: счетчик команд с адресом следующей команды и аккумулятор, в котором хранятся результаты арифметических операций. Кроме того, имеются внутренние регистры, в которых хранится текущая команда (instr), тип текущей команды (instr_type), адрес операнда команды (data_loc) и сам операнд (data). Каждая команда содержит один адрес ячейки памяти. В ячейке памяти находится операнд, например фрагмент данных, который нужно добавить в аккумулятор.

Системы RISC и CISC

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

В компании IBM этой тенденции противостояла группа разработчиков во главе с Джоном Коком (John Cocke); они попытались воплотить идеи Сеймура Крея, создав экспериментальный высокоэффективный мини-компьютер 801IBM. Хотя компания IBM не занималась сбытом этой машины, а результаты эксперимента были опубликованы только через несколько лет, весть быстро разнеслась по свету, и другие производители тоже занялись разработкой подобных архитектур.

В 1980 году группа разработчиков в университете Беркли во главе с Дэвидом Паттерсоном (David Patterson) и Карло Секвином (Carlo Sequin) начала разработку не ориентированных на интерпретацию процессоров VLSI. Для обозначения этого понятия они придумали термин RISC, а новый процессор назвали RISC I, вслед за которым вскоре был выпущен RISC II. Немного позже, в 1981 году, Джон Хеннеси (John Hennesy) в Стенфорде разработал и выпустил другую микросхему, которую он назвал MIPS. Эти две микросхемы развились в коммерчески важные продукты SPARC и MIPS соответственно.

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

В то время, когда разрабатывались эти простые процессоры, всеобщее внимание привлекало относительно небольшое количество команд (обычно около 50). Для сравнения: число команд в компьютерах VAX производства DEC и больших компьютерах производства IBM в то время составляло от 200 до 300. Компьютер RISC (Reduced Instruction Set Computer -- компьютер с сокращенным набором команд) противопоставлялся системе CISC (Complex Instruction Set Computer -- компьютер с полным набором команд). В качестве примера машины типа CISC можно привести компьютер VAX, который доминировал в то время в университетской среде. На сегодняшний день мало кто считает, что главное отличие RISC и CISC состоит в количестве команд, но названия сохраняются до сих пор.

С этого момента началась грандиозная идеологическая война между сторонниками RISC и разработчиками VAX, Intel и мэйнфреймов IBM. По мнению первых, наилучший способ разработки компьютеров -- включение туда небольшого количества простых команд, каждая из которых выполняется за один цикл тракта данных (см. рис.), то есть производит над парой регистров какую-либо арифметическую или логическую операцию (например, сложение или операцию логического И) и помещает результат обратно в регистр. В качестве аргумента они утверждали, что, даже если системе RISC приходится выполнять 4 или 5 команд вместо одной, которую выполняет CISC, RISC все равно выигрывает в скорости, так как RISC-команды выполняются в 10 раз быстрее (поскольку они не интерпретируются). Следует также отметить, что к этому времени быстродействие основной памяти приблизилось к быстродействию специальных командных ПЗУ, поэтому недостатки интерпретации были налицо, что еще более поднимало популярность компьютеров RISC.

Учитывая преимущества RISC в плане производительности, можно было предположить, что на рынке такие компьютеры, как Alpha компании DEC, должны доминировать над компьютерами CISC (Pentium и т. д.). Однако ничего подобного не произошло. Возникает вопрос: почему?

Во-первых, компьютеры RISC несовместимы с другими моделями, а многие компании вложили миллиарды долларов в программное обеспечение для продукции Intel. Во-вторых, как ни странно, компания Intel сумела воплотить те же идеи в архитектуре CISC. Процессоры Intel, начиная с процессора 486, содержат RISC-ядро, которое выполняет самые простые (и обычно самые распространенные) команды за один цикл тракта данных, а по обычной технологии CISC интерпретируются более сложные команды. В результате обычные команды выполняются быстро, а более сложные и редкие -- медленно. Хотя при таком “гибридном” подходе производительность ниже, чем в архитектуре RISC, новая архитектура CISC имеет ряд преимуществ, поскольку позволяет использовать старое программное обеспечение без изменений.

Принципы разработки современных компьютеров

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

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

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

Компьютер должен запускать как можно больше команд в секунду. В современных компьютерах используется много различных способов повышения производительности, главный из которых -- запуск как можно большего количества команд в секунду. Процессор 500-MIPS способен запускать 500 млн команд в секунду, и при этом не имеет значения, сколько времени занимает выполнение этих команд. (MIPS -- это сокращение от Millions of Instructions Per Second -- миллионы команд в секунду.) Этот принцип предполагает, что параллелизм должен играть главную роль в повышении производительности, поскольку запустить на выполнение большое количество команд за короткий промежуток времени можно только в том случае, если есть возможность одновременного выполнения нескольких команд.

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

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

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

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

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

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

Бит

Основной единицей хранения данных в памяти является двоичный разряд, который называется битом. Бит может содержать 0 или 1. Эта самая маленькая единица памяти. (Устройство, в котором хранятся только нули, вряд ли могло быть основой памяти. Необходимы по крайней мере два значения.)

Многие полагают, что в компьютерах используется бинарная арифметика, потому что это “эффективно”. Они имеют в виду (хотя сами это редко осознают), что цифровая информация может храниться благодаря различию между разными величинами какой-либо физической характеристики, например напряжения или тока. Чем больше величин, которые нужно различать, тем меньше различий между смежными величинами, и тем менее надежна память. В двоичной системе требуется различать всего две величины, следовательно, это -- самый надежный метод кодирования цифровой информации. Если вы не знакомы с двоичной системой счисления, загляните в приложение А.

Считается, что некоторые компьютеры, например, мэйнфреймы IBM, используют и десятичную и двоичную арифметику. На самом деле здесь применяется так называемый двоично-десятичный код. Для хранения одного десятичного разряда задействуются 4 бит. Эти 4 бит дают 16 комбинаций для размещения 10 различных значений (от 0 до 9). При этом 6 оставшихся комбинаций не используются. Вот как выглядит число 1944 в двоично-десятичной и в чисто двоичной системах счисления (в обоих случаях используется 16 бит): память компьютер процессор маршрутизатор

? двоично-десятичное представление -- 0001 1001 0100 0100;

? двоичное представление -- 0000011110011000.

В двоично-десятичном представлении 16 бит достаточно для хранения числа от 0 до 9999, то есть доступно всего 10 000 различных комбинаций, а в двоичном представлении те же 16 бит позволяют получить 65 536 комбинаций. Именно по этой причине говорят, что двоичная система эффективнее.

Однако представим, что могло бы произойти, если бы какой-нибудь гениальный инженер придумал очень надежное электронное устройство, позволяющее хранить разряды от 0 до 9, разделив диапазон напряжения от 0 до 10 вольт на 10 интервалов. Четыре таких устройства могли бы хранить десятичное число от 0 до 9999, то есть 10 000 комбинаций. А если бы те же устройства использовались для хранения двоичных чисел, они могли бы содержать всего 16 комбинаций. Естественно, в этом случае десятичная система была бы более эффективной.

Адреса памяти

Память состоит из ячеек памяти, каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом памяти. По адресу программы могут ссылаться на определенную ячейку. Если память содержит n ячеек, они будут иметь адреса от 0 до n - 1. Все ячейки памяти содержат одинаковое число бит. Если ячейка состоит из k бит, она может содержать любую из 2k комбинаций. На рис. 2.8 показаны 3 различных варианта организации 96-разрядной памяти. Отметим, что соседние ячейки по определению имеют последовательные адреса.

Рис. 2.1 Три варианта организации 96-разрядной памяти

В компьютерах, в которых используется двоичная система счисления (включая восьмеричное и шестнадцатеричное представление двоичных чисел), адреса памяти также выражаются в двоичных числах. Если адрес состоит из m бит, максимальное число адресованных ячеек составит 2m. Например, адрес для обращения к памяти, изображенной на рис. 2.8, а, должен состоять по крайней мере из 4 бит, чтобы выражать все числа от 0 до 11. При устройстве памяти, показанном на рис. 2.8, б и 2.8, в, достаточно 3-разрядного адреса. Число бит в адресе определяет максимальное количество адресуемых ячеек памяти и не зависит от числа бит в ячейке. 12-разрядные адреса нужны и памяти из 212 ячеек по 8 бит каждая, и памяти из 212 ячеек по 64 бит каждая.

В табл. 2.1 показано число битов в ячейке памяти некоторых коммерческих компьютеров.

Таблица 2.1. Число бит в ячейке памяти некоторых моделей коммерческих компьютеров

Компьютер

Число битов в ячейке

Burroughs B1700

1

IBM PC

8

DEC PDP-8

12

IBM 1130

16

DEC PDP-15

18

XDS 940

24

Electrologica X8

27

XDS Sigma 9

32

Honeywell 6180

36

CDC 3600

48

CDC Cyber

60

Ячейка -- минимальная единица памяти, к которой можно обращаться. В последние годы практически все производители выпускают компьютеры с 8-разрядными ячейками, которые называются байтами. Байты группируются в слова. В компьютере с 32-разрядными словами на каждое слово приходится 4 байт, а в компьютере с 64-разрядными словами -- 8 байт. Такая единица как слово, необходима, поскольку большинство команд производят операции над целыми словами (например, складывают два слова). Таким образом, 32-разрядная машина содержит 32-разрядные регистры и команды для манипуляций с 32-разрядными словами, тогда как 64-разрядная машина имеет 64-разрядные регистры и команды для перемещения, сложения, вычитания и других операций над 64-разрядными словами.

Упорядочение байтов

Байты в слове могут нумероваться слева направо или справа налево. На первый взгляд может показаться, что между этими двумя вариантами нет разницы, но мы скоро увидим, что выбор имеет большое значение. На рис. 2.9, а изображена область памяти 32-разрядного компьютера, в котором байты пронумерованы слева направо (как у компьютеров SPARC или мэйнфреймов IBM). На рис. 2.9, б показана аналогичная область памяти 32-разрядного компьютера с нумерацией байтов справа налево (как у компьютеров Intel). В первой из этих систем нумерация начинается с высшего порядка, в связи с чем она относится к категории компьютеров с прямым порядком следования байтов. Системам с обратным порядком следования байтов(рис. 2.9, а). Между прочим, эти термины (“big endian” и “little endian”) заимствованы из “Путешествий Гулливера” Свифта -- он, как мы помним, иронизировал по поводу спора политиков о том, с какого конца нужно разбивать яйца. Впервые они были введены в научный оборот в виртуозной статье Коэна.

Рис. 2.2 Память с прямым порядком следования байтов (а);

память с обратным порядком следования байтов (б)

Важно понимать, что в обеих системах 32-разрядное целое число (например, 6) представлено битами 110 в трех крайних правых битах слова, а остальные 29 бит представлены нулями. Если байты нумеруются слева направо, биты 110 находятся в байте 3 (или 7, или 11 и т. д.). Если байты нумеруются справа налево, биты 110 находятся в байте 0 (или 4, или 8 и т. д.). В обеих системах слово, содержащее это целое число, имеет адрес 0.

Если компьютеры содержат только целые числа, никаких сложностей не возникает. Однако многие прикладные задачи требуют использования не только целых чисел, но и цепочек символов и других типов данных. Рассмотрим, например, простую запись данных о персонале, состоящую из строки (имя сотрудника) и двух целых чисел (возраст и номер отдела). Строка завершается одним или несколькими нулевыми байтами, призванными заполнить слово целиком. На рис. 2.10, а для записи “Jim Smith, 21 год, отдел 260” (1 ґ 256 + 4 = 260) представлена схема с нумерацией байтов справа налево, а на рис. 2.10, б -- с нумерацией байтов слева направо.

Рис. 2.3 Запись данных о сотруднике для машины с прямым порядком следования байтов

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

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

Компьютер, получивший запись, имя печатает правильно, но возраст получается 21 ґ 224, и номер отдела тоже искажается. Такая ситуация возникает, поскольку при передаче записи порядок следования букв в слове меняется так, как нужно, но при этом порядок следования байтов в целых числах тоже меняется, что приводит к неверному результату.

Очевидное решение проблемы -- использование программы, которая инвертировала бы байты в слове после создания копии. Результат такой операции представлен на рис. 2.10, г. Мы видим, что числа стали правильными, однако строка превратилась в “MIJTIMS”, при этом буква “H” вообще расположилась отдельно. Строка переворачивается потому, что компьютер сначала считывает байт 0 (пробел), затем байт 1 (M) и т. д.

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

Кэш-память

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

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

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

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

Интересно отметить, что существуют технологии, объединяющие небольшую и быструю память с большой и медленной, что позволяет по разумной цене получить память и с высокой скоростью работы, и большой емкости. Память небольшого объема с высокой скоростью работы называется кэш-памятью (от французского слова “cacher” -- "прятать" читается “кашэ”). Далее мы кратко опишем, как используется кэш-память и как она работает. Более подробное описание вы найдете в главе 4.

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

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

Ситуация, когда при последовательных обращениях к памяти в течение некоторого промежутка времени используется только небольшая ее область, называется принципом локальности. Этот принцип составляет основу всех систем кэш-памяти. Идея состоит в том, что когда определенное слово вызывается из памяти, оно вместе с соседними словами переносится в кэш-память, что позволяет при очередном запросе быстро обращаться к следующим словам. Общее устройство процессора, кэш-памяти и основной памяти иллюстрирует рис. 2.13. Если слово считывается или записывается k раз, компьютеру требуется сделать 1 обращение к медленной основной памяти и k - 1 обращений к быстрой кэш-памяти. Чем больше k, тем выше общая производительность.

Рис. 2.4 Кэш-память по логике вещей должна находиться между процессором и основной памятью

В действительности существует три возможных варианта размещения кэш-памяти.

Мы можем сделать и более строгие вычисления. Пусть c -- время доступа к кэш-памяти, m -- время доступа к основной памяти и h -- коэффициент кэш-попаданий (hit ratio), который показывает соотношение числа обращений к кэш памяти и общего числа всех обращений к памяти. В нашем примере h = (k - 1)/k. Некоторые авторы выделяют коэффициент кэш-промахов (miss ratio), равный 1 - h.

Таким образом, мы можем вычислить среднее время доступа:

Среднее время доступа = c + (1 - h) m.

Если h ® 1, то есть все обращения делаются только к кэш-памяти, то время доступа стремится к c. С другой стороны, если h ® 0, то есть каждый раз нужно обращаться к основной памяти, то время доступа стремится к c + m: сначала требуется время c для проверки кэш-памяти (в данном случае безуспешной), а затем -- время m для обращения к основной памяти. В некоторых системах обращение к основной памяти может начинаться параллельно с исследованием кэш-памяти, чтобы в случае кэш-промаха цикл обращения к основной памяти уже начался. Однако эта стратегия требует способности останавливать процесс обращения к основной памяти в случае кэш-попадания, что усложняет разработку подобного компьютера.

Основная память и кэш-память делятся на блоки фиксированного размера с учетом принципа локальности. Блоки внутри кэш-памяти обычно называют строками кэша (cache lines). При кэш-промахе из основной памяти в кэш-память загружается вся строка, а не только необходимое слово. Например, если строка состоит из 64 байт, обращение к адресу 260 влечет за собой загрузку в кэш-память всей строки (байты с 256 по 319) на случай, если через некоторое время понадобятся другие слова из этой строки. Такой путь обращения к памяти более эффективен, чем вызов каждого слова по отдельности, потому что однократный вызов k слов происходит гораздо быстрее, чем вызов одного слова k раз.

Кэш-память очень важна для высокопроизводительных процессоров. Однако здесь возникает ряд вопросов. Первый вопрос -- объем кэш-памяти. Чем больше объем, тем лучше работает память, но тем дороже она стоит. Второй вопрос -- размер строки кэша. Кэш-память объемом 16 Кбайт можно разделить на 1024 строки по 16 байт, 2048 строк по 8 байт и т. д. Третий вопрос -- механизм организации кэш-памяти, то есть то, как она определяет, какие именно слова находятся в ней в данный момент. Устройство кэш-памяти мы рассмотрим подробно в главе 4.

Четвертый вопрос -- должны ли команды и данные находиться вместе в общей кэш-памяти. Проще всего разработать объединенную кэш-память, в которой будут храниться и данные и команды. В этом случае вызов команд и данных автоматически уравновешивается. Однако в настоящее время существует тенденция к использованию разделенной кэш-памяти ,когда команды хранятся в одной кэш-памяти, а данные -- в другой. Такая архитектура также называется гарвардской (Harvard architecture), поскольку идея использования отдельной памяти для команд и отдельной памяти для данных впервые воплотилась в компьютере Marc III, который был создан Говардом Айкеном в Гарварде. Современные разработчики пошли по этому пути, поскольку сейчас широко распространены конвейерные архитектуры, а при конвейерной организации должна быть возможность одновременного доступа и к командам, и к данным (операндам). Разделенная кэш-память позволяет осуществлять параллельный доступ, а общая -- нет. К тому же, поскольку команды обычно не меняются во время выполнения программы, содержание кэша команд не приходится записывать обратно в основную память.

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

Сборка модулей памяти и их типы

Со времен появления полупроводниковой памяти и до начала 90-х годов все микросхемы памяти производились, продавались и устанавливались в виде отдельных микросхем. Эти микросхемы вмещали от 1 Кбит до 1 Мбит информации и выше. В первых персональных компьютерах часто оставлялись пустые разъемы, чтобы покупатель в случае необходимости мог вставить дополнительные микросхемы памяти.

В настоящее время распространен другой подход. Группа микросхем (обычно 8 или 16) монтируется на одну крошечную печатную плату и продается как один блок. Он называется SIMM (Single Inline Memory Module -- модуль памяти с односторонним расположением) или DIMM (Dual Inline Memory Module -- модуль памяти с двухсторонним расположением). На платах SIMM устанавливается один краевой разъем с 72 контактами; при этом скорость передачи данных за один тактовый цикл составляет 32 бит. Модули DIMM, как правило, снабжаются двумя краевыми разъемами (по одному на каждой стороне платы) с 84 контактами; таким образом, общее количество контактов достигает 168, а скорость передачи данных возрастает до 64 бит за цикл. Схема модуля SIMM изображена на рис.

Рис. Модуль SIMM объемом 256 Мбайт. Модулем управляют две микросхемы

Обычно модули SIMM и DIMM содержат 8 микросхем по 256 Мбит (32 Мбайт) каждая. Таким образом, весь модуль вмещает 256 Мбайт информации. Во многих компьютерах предусматривается возможность установки четырех модулей; следовательно, при использовании модулей по 256 Мбайт общий объем памяти достигает 1 Гбайт.

В портативных компьютерах обычно используется модуль DIMM меньшего размера, который называется SO-DIMM (Small Outline DIMM). Модули SIMM и DIMM могут содержать бит четности или код исправления ошибок, однако, поскольку вероятность возникновения ошибок в модуле составляет примерно одну ошибку за 10 лет, в большинстве обычных компьютеров схемы обнаружения и исправления ошибок не применяются.

2.1.3 Внешняя память

Каков бы ни был объем основной памяти, ее все равно будет мало. Такова уж наша природа, мы всегда хотим сохранить в памяти компьютера больше данных, чем она может вместить. С развитием технологий людям приходят в голову такие вещи, которые раньше считались совершенно фантастическими. Например, можно вообразить, что Библиотека Конгресса решила представить в цифровой форме и продать полный текст со всеми иллюстрациями всех хранящихся в ней изданий (“Все человеческие знания всего за 99 долларов”). В среднем каждая книга содержит 1 Мбайт текста и 1 Мбайт упакованных иллюстраций. Таким образом, для размещения 50 млн книг понадобится 10 байт или 100 Тбайт памяти. Для хранения всех существующих художественных фильмов (50 000) необходимо примерно столько же места. Такой объем информации в настоящее время невозможно разместить в основной памяти и вряд ли удастся это сделать в будущем (по крайней мере, в ближайшие несколько десятилетий).

Иерархическая структура памяти

Иерархическая структура памяти иерархическая структура памяти является традиционным решением проблемы хранения больших объемов данных (рис. 2.15). На самом верху иерархии находятся регистры процессора. Доступ к регистрам осуществляется быстрее всего. Дальше идет кэш-память, объем которой сейчас составляет от 32 Кбайт до нескольких мегабайтов. Затем следует основная память, которая в настоящее время может вмещать от 16 Мбайт до десятков гигабайтов. Затем идут магнитные диски и, наконец, накопители на магнитной ленте и оптические диски, которые используются для хранения архивов.


Подобные документы

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

    контрольная работа [166,0 K], добавлен 10.02.2015

  • Принципиальная схема устройства современного персонального компьютера. Краткая характеристика основных составляющих ПК: процессора, модулей оперативной (внутренней) и долговременной (внешней) памяти, устройств ввода и вывода информации для пользователя.

    презентация [100,7 K], добавлен 07.06.2015

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

    реферат [30,7 K], добавлен 28.01.2014

  • Архитектура ЭВМ как общее описание ее структуры, функций и ресурсов. Схема взаимодействия устройств компьютера согласно архитектуре фон Неймана. Базовый комплекс персонального компьютера. Центральные и периферийные устройства, внутренняя архитектура.

    презентация [335,2 K], добавлен 17.05.2010

  • История создания вычислительной техники. Организация вычислительного устройства ("архитектура фон Неймана"). Устройства ввода информации, ее обработки, хранения и вывода. Мониторы общего и профессионального назначения, их сравнительная характеристика.

    реферат [2,3 M], добавлен 25.11.2009

  • Внутренние и внешние устройства персонального компьютера. Классификация и характеристики ЭВМ, основы учения и структуры первых поколений. Основные принципы построения ПК. Функции центрального процессора и операционные устройства управления компьютера.

    курсовая работа [109,7 K], добавлен 04.11.2010

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

    контрольная работа [1,8 M], добавлен 27.11.2010

  • Архитектура современного персонального компьютера. Виды и характеристики центральных и внешних устройств ЭВМ. Структурная и функциональная схемы персонального компьютера. Устройства для ввода информации в системный блок и для отображения информации.

    курсовая работа [592,5 K], добавлен 18.01.2012

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

    курсовая работа [102,4 K], добавлен 11.02.2011

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

    реферат [15,9 K], добавлен 18.01.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.