Содержание:
Техническое задание и исходные данные. Проектирование структурной схемы гипотетической ЭВМ. Система ввода-вывода. Основная память. Страничная организация основной памяти. Система прерываний. Контроллер прямого доступа к памяти. Разработка структурной схемы центрального процессора. Блок синхронизации. Таймер. Монитор и клавиатура. Буфер TLB. Заключение. Список литературы.1. Техническое задание и исходные данные:
Целью данной работы является разработка структурной схемы гипотетической ЭВМ. Для более детального изучения необходимо рассмотреть адресный кэш до уровня принципиальной схемы. Исходные данные для работы определяют состав и параметры ЭВМ. Необходимо наличие следующих блоков:
- Центральное процессорное устройство;
- Микропрограммное устройство управления;
- Оперативная память;
- Система прерываний;
- Блок синхронизации;
- Таймер;
- Устройства ввода-вывода.
Индивидуальное задание предусматривает следующие параметры ЭВМ:
- Трехшинная структура магистрали;
- Радиальная система прерываний с обработкой на уровне команд;
- Наличие адресного кэша;
- Страничная организация оперативной памяти;
- Организация ввода вывода с прямым доступом к памяти;
- Рассмотреть процедуру замены дескриптора страниц.
Основные параметры ЭВМ:
- Адресность ЭВМ: двухадресная;
- Длина команды: переменная;
- Разрядность ЭВМ – не менее 16;
- Емкость ОП – не менее 128Кб;
2. Проектирование структурной схемы гипотетической ЭВМ:
Так как на данный момент 16-разрядные микропроцессоры уже устарели (имеется в виду применение в обычных ПК), а 64-разрядные только-только начинают появляться (в основном, это МП не для обычных, а для специализированных ЭВМ), было решено взять наиболее оптимальный вариант ЦП – 32-разрядный. Тем более что и большинство приложений создавалось и оптимизировалось именно под 32-разрядные процессоры. Трехшинная архитектура подразумевает наличие трех магистралей: команд, адреса и данных. Для того чтобы не было узких мест в операциях обмена данными между памятью, процессором и различными устройствами, было решено выполнить шину данных 32-разрядной. Для эффективной адресации ОП (для адресации более 65К ячеек), тем более что страничная организация памяти подразумевает реализацию виртуальной памяти, необходима 32-разрядная шина адреса. Структурная схема гипотетической ЭВМ приведена на рис.1
3. Система ввода-вывода:
Для упрощения аппаратной реализации будет использоваться адресное пространство портов ввода-вывода, отличное от адресного пространства физической памяти. Для разделения обращений к ОП и портам ввода-вывода необходимо ввести селекторный бит M/IO#. При низком уровне сигнала происходит обращение к памяти, при высоком – к портам ввода-вывода. Для выбора операции чтения/записи используется линия RD/WR#.
4. Основная память:
Память практически любой ЭВМ состоит из следующих компонентов:
- Основная или оперативная память используется для обмена информацией между процессором, внешней памятью и периферийными подсистемами. Подробнее ОЗУ будет рассмотрено ниже.
- Постоянная память используется для хранения системной информации. Реализуется в виде микросхем ПЗУ или флэш-памяти. Как правило, хранит базовую систему ввода-вывода. БИОС содержит программную поддержку ресурсов ЭВМ и обеспечивает конфигурирование аппаратных средств, их диагностику и вызов загрузчика ОС с соответствующего накопителя
- Кэш-память. Хранит копии блоков данных тех областей ОЗУ, к которым происходили последние обращения, и велика вероятность последующих. Тогда данные будут извлечены из кэша существенно быстрее, нежели из более медленной оперативной памяти. Наличие кэша “прозрачно” для пользователя и программ. Кэш-память не адресуется, используется для повышения быстродействия, т. к. позволяет в некоторых случаях увеличить производительность системы в целом.
Для удобства использования постоянная память будет размещаться в начале адресного пространства. В современных ЭВМ объем постоянной памяти может составлять до 512Кбайт. В данном случае возьмем ПЗУ объемом 256Кбайт(наиболее распространенный объем БИОС), но зарезервируем адреса до 1Мбайта в следующих целях: во-первых, возможно увеличение самого ПЗУ, во-вторых, для определения теневой памяти(Shadow memory). Смысл состоит в перемещении содержимого БИОС'ов системы, выдеоадаптеров и дополнительных адаптеров из медленной постоянной памяти в быструю оперативную. Копии переносятся в защищенную область памяти в диапазоне 640Кбайт-1Мбайт. Происходит это следующим образом: в выбранную страницу памяти копируется 64Кбайта системный БИОС и (или) 32Кбайта БИОС адаптеров. Затем область памяти защищается от записи и происходит переадресация страниц памяти. Таким образом, при обращении по действительным адресам коды читаются из теневой области, что повышает скорость работы с накопителем и видеоадаптером.
К ОЗУ предъявляются следующие требования:
- большой объем;
- высокое быстродействие;
- высокая надежность хранения данных.
Большой объем оперативной памяти в сочетании с невысокой стоимостью подразумевает реализацию на микросхемах DRAM(быстродействие ниже, конечно, чем с применением микросхем SRAM, но тогда стоимость ЭВМ значительно возрастает). Надежность хранения можно достичь путем использования микросхем известных производителей. Так же возможен контроль хранимых данных. Память с ECC(Error Checking and Correction – выявление и исправление ошибок) позволяет исправлять одиночные и обнаруживать двойные ошибки. Необходима аппаратная поддержка такого вида памяти. Применяется для обнаружения случайных ошибок в работе.
Объем ОП выбирается исходя из конкретных требований к ЭВМ. На сегодняшний день нецелесообразно использование памяти объемом меньше 32Мб.
5. Страничная организация памяти:
В системах со страничной организацией основная и внешняя память (главным образом дисковое пространство) делятся на блоки или страницы фиксированной длины. Каждому пользователю предоставляется некоторая часть адресного пространства, которая может превышать основную память компьютера, и которая ограничена только возможностями адресации, заложенными в системе команд. Эта часть адресного пространства называется виртуальной памятью пользователя. Каждое слово в виртуальной памяти пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер страницы, а младшие - как номер слова (или байта) внутри страницы. Преобразование виртуальных адресов в физические происходит следующим образом: по номеру страницы из таблицы страниц извлекается дескриптор, содержащий следующую информацию:
- Адрес страницы в оперативной памяти;
- Статус страницы (в данный момент страница находится в памяти или выгружена на диск);
- Права доступа к этой странице (для работы в многозадачном режиме);
- Оценочная информация (для реализации алгоритма замены страниц);
Схематично это выглядит так:
|
![]() | |
|
|
|
Рис. 2 Преобразование виртуального адреса в физический.
Страничные таблицы часто имеют двухуровневую организацию. Распределение памяти страницами имеет следующие недостатки:
- Потери на преобразование адресов. Для предотвращения этого замедления в процессор вводится буфер ассоциативной трансляции TKB(Translation Look aside buffer) для хранения интенсивно использующихся строк таблиц. Буфер представляет собой полностью ассоциативный кэш на 32 строки таблиц трансляции.
- Необходим оптимальный алгоритм определения, какая из страниц в ОП подлежит замене при страничном сбое.
- Часть страницы может не использоваться, что приводит к нерациональному использованию адресного пространства.
Во многих системах со страничной организацией страницы имеют размер порядка 4Кбайт. При обращении к странице, которая в данный момент не присутствует в ОП, вырабатывается процессорное (страничное) прерывание. После этого управление передается управляющей программе (части ядра ОС) и происходит загрузка страницы из внешней памяти.
6. Система прерываний:
Прерывание – это изменение текущей последовательности команд. Различают четыре источника прерываний:
a. Внутренние прерывания процессора и сопроцессора;
b. Немаскируемые внешние прерывания;
c. Маскируемые внешние прерывания;
d. Программно - вызываемые прерывания.
Причем последние не являются прерываниями в строгом смысле этого слова.
При обработке прерываний процессор сохраняет в стеке слово состояния (регистры флагов, кодового сегмента и указатель следующей инструкции), сбрасывает флаг разрешения прерываний и вызывает процедуру обслуживания, адрес которой записан в таблице прерываний, хранящейся в ОЗУ. После завершения обработки из стека восстанавливаются сохраненные данные, и процессор начинает выполнение инструкции, следующей за той, после которой последовало прерывание.
Задание подразумевает реализацию радиальной системы прерываний с обработкой на уровне макрокоманд. В качестве контроллера прерываний будет использоваться микросхема КМ1804ВН1, которая позволяет реализовать схему векторного приоритетного прерывания с возможностью наращивания до 16 аппаратных прерываний. Такая схема называется радиальной структурой прерываний. Для каждого устройства предусмотрена своя линия запроса, что позволяет уменьшить время идентификации источника прерываний. Сигналы прерываний, поступающие на входы контроллера прерываний, преобразуются в вектор (в простейшем случае это простая шифрация). Полученный вектор поступает в дешифратор векторного адреса (ПЗУ), где происходит вычисление начального адреса процедуры обработки прерывания, который нужно загрузить в секвенсор. Обработка прерываний на уровне команд имеет как свои плюсы, так и свои минусы. Из плюсов можно отметить следующие: минимальное количество запоминаемой информации (для выхода из программы обработки прерываний), нет необходимости опрашивать устройства в поисках пославшего запрос. Обработка прерываний на уровне команд имеет следующий недостаток – такая система не обладает минимальным временем отклика, т. к. запрос на прерывание будет обработан только после выполнения текущей команды, а не микрооперации. Некоторые прерывания должны обрабатываться на микроуровне, тогда запрос на прерывание подается в секвенсер после выполнения текущей микрооперации. Система прерываний показана на Рис.3
7. Контроллер прямого доступа к памяти:
Ввод вывод в режиме прямого доступа к памяти(ПДП) использует канал прямого доступа к памяти, по которому массивы данных передаются непосредственно между периферийным устройством и ОП, минуя микропроцессор. Это позволяет достичь наибольшей скорости передачи, меньшей загруженности процессора, но требует специального контроллера. Процесс передачи данных происходит следующим образом: периферийное устройство посылает контроллеру запрос, который затем транслируется в микропроцессор. При этом МП прекращает работу по выполнению текущей программы, переводит свои буферные регистры, подключенные к шине адреса и шине данных, в высокоимпедансное состояние и прекращает выработку управляющих сигналов. В счетчик КПДП заносится адрес ячейки памяти, с которой начинается массив данных и число слов в нем, а также взводится счетчик циклов. Адрес ячейки затем выдается на шину адреса и начинается обмен. При передаче каждого слова содержимое счетчиков в контроллере изменяется на единицу, и обмен данными производиться автоматически до тех пор, пока не обнулится счетчик. Запрос затем снимается, и микропроцессор возобновляет обработку приостановленной программы.
Контроллер ПДП выполняет следующие функции:
- Управление инициируемой процессором или устройством передачей данных;
- Задание размера блока данных, который подлежит передаче и области памяти, используемой при передаче;
- Формирование адресов ячеек ОП, участвующих в передаче;
- Подсчет числа единиц данных, передаваемых от ПУ в ОП или обратно, и определение момента завершения заданной операции ввода-вывода.
Реализуем контроллер ПДП на микросхемах серии Am2900. Выбор обусловлен приемлемыми временными характеристиками (согласованность с остальными блоками), гибкостью и универсальностью работы. Т. к. в системе используются 32-разрядные адреса и данные, то придется каскадировать микросхемы. В качестве генератора адреса используется микросхема Am2940, которая состоит из следующих блоков: 3-разрядного управляющего регистра; 8-разрядного счетчика адреса; 8-разрядного регистра адреса; 8-разрядного счетчика слов; 8-разрядного регистра количества слов; блока обнаружения конца пересылки; 8-разрядного мультиплексора данных с выходными буферами с тремя состояниями; выходных буферов адреса (с тремя состояниями). В качестве устройства управления последовательностью микрокоманд была выбрана микросхема Am2910, позволяющая реализовать все необходимые функции данного контроллера и, к тому же, обладающая высоким быстродействием.
Структурная схема контроллера ПДП приведена на рис.2.
8. Разработка структурной схемы центрального процессора:
На данный момент рассмотрены все пункты для разработки структурной схемы микропроцессора. Микропроцессор - это программно-управляемое электронное устройство, предназначенное для цифровой обработки информации и управления процессом этой обработки, и реализованное в виде одной или нескольких интегральных микросхем (ИМС). Его можно представить в виде совокупности операционного и управляющего блоков (ОБ и УБ).
8.1 Операционный блок (ОБ):
В задачу операционного блока входит выполнение арифметических и логических операций над данными, адресация памяти и внешних устройств и организация страничной переадресации.
В качестве АЛУ используется микросхема Am29332, представляющая собой нерасширяемый 32-разрядный центральный процессорный модуль, содержащий трехвходовое комбинационное АЛУ. Am29332 оснащена встроенными схемными средствами выполнения многотактовых операций (умножения по модифицированному алгоритму Бута и деления по алгоритму “без восстановления остатка”), имеет два входных и один выходной порты данных. Внутренний 64-разрядный групповой сдвигатель выполняет сдвиг влево, вправо или циклический на заданное число разрядов в одном цикле. На этом же кристалле выполнен статусный регистр, который может загружаться новыми значениями флагов в каждом цикле. Далее содержимое статусного регистра подается на тестовые входы секвенсера микрокоманд в МУУ.
Дополнительно используется микросхема Am29334, представляющая собой 4-х портовую регистровую память с двусторонним доступом с организацией (64х18)бит. Имеет два порта записи и два порта считывания для данных и четыре 6-битовых адресных порта. При параллельном соединении двух RGF (Am29334) была получена необходимая информационная организация (64х32) бит.
Т. к. шина данных будет иметь разрядность 32 бита, то формат команды удобно сделать 32-разрядным или 16-ти разрядным (для однооперандных и безоперандных инструкций) Данный формат позволяет адресовать 256 регистров общего назначения, и использовать большой набор команд с разнообразными способами адресации.
Для обработки прерываний на уровне команд в структуре предусмотрен дешифратор векторного адреса (ДВА), а также регистр и мультиплексор кода условия.
Операционный блок содержит также регистр входных данных (RGDin), регистр выходных данных (RGDout) и регистр адреса (RGA), содержащий физический адрес ОП.
8.2 Микропрограммное устройство управления (МУУ):
МУУ занимается генерацией управляющих сигналов для блоков ядра ЭВМ, а также управляет последовательностью выполнения команд и микрокоманд. Представляет собой конвейер первого порядка с регистром микрокоманд.
Состав МУУ:
- Регистр команд(Рг. К.), выполняет функцию буферного регистра, обеспечивает взаимодействие шины данных DB с МУУ.
- Преобразователь начального адреса(ПНА), код операции в адрес соответствующей микрокоманды.
- Секвенсер микрокоманд, обеспечивает непосредственное управление выбором нужной МК с учетом флага из ОБ и предыдущей МК. В качестве секвенсера микрокоманд была выбрана микросхема Am29331.
- Микропрограммируемая память, содержит все микрокоманды данной структуры.
- Регистр микрокоманд – реализует вместе с секвенсером конвейер первого порядка.
Выбор микросхемы Am29331 обусловлен ее достаточной функциональностью и приемлемыми временными характеристиками.
С шины данных в регистр команд считывается очередная команда. Младшие разряды представляют собой код операции(КОП), выполняемой процессором.. По этому коду ПНА формирует адрес микрокоманды обработки данной команды(адрес первой МК из МПП). Этот адрес поступает на входную шину данных секвенсера, который выдает адрес следующей МК в зависимости от флагов состояния, адреса перехода и инструкций. Следующие биты представляют собой адреса РОН, передающиеся на входы мультиплексора выбора адреса RGF.
Длина микрокоманды не должна превышать 32 разрядов. Примерный формат команды:
RG1 – регистр источник;
RG2 – регистр источник/приемник;
Х1 – адрес РОН, содержащий адрес ячейки памяти;
Х2 - адрес РОН, содержащий адрес ячейки памяти;
КОП – код операции.
Структурная схема ЦП представлена на Рис.3
9. Блок синхронизации:
Блок синхронизации необходим для синхронизации всех цифровых устройств, входящих в ЭВМ и призван устранить критические временные состязания сигналов. Устройство синхронизации должно содержать следующие блоки: задающий генератор, формирователь опорных сигналов и размножитель сигналов. В качестве формирователя опорных сигналов используется микропрограммируемый тактовый генератор КМ1804ГГ1, способный менять длину цикла, что позволит повысить производительность ЦП. При включении питания необходимо выполнить начальную установку, т. е. выполнить сброс секвенсера микрокоманд(установить адрес первой микрокоманды на нулевой). Для этого в блок синхронизации добавим схему начальной установки, реализованную на основе микросхемы MC34064 фирмы MOTOROLA. Микросхема MC34064 это специализированный для микропроцессорных систем контроллер предустановки, применяемый для выработки асинхронного сигнала RESET#. Время начальной установки схемы должна быть не менее 200ms.
Структурная схема блока синхронизации и схемы начальной установки представлена на Рис.3
10. Таймер:
Большинство микроЭВМ содержит источник реального времени - часы и таймер. Таймер предназначен для деления машинного времени на временные интервалы и для эффективного использования процессора при работе с периферийными устройствами. Он обеспечивает совместную работу ЦП и ПУ в реальном масштабе времени, осуществляя разбиения машинного времени на равные интервалы времени. В состав таймера входят схемы, необходимые для:
- запроса и получения канала;
- формирования вектора прерывания;
11. Монитор и клавиатура:
Клавиатура представляет собой одно из основных устройств ввода информации. Для подключения клавиатуры применяется специальный контроллер. При нажатии клавиши контроллер клавиатуры вырабатывает запрос на прерывание, код клавиши добавляется в буфер FIFO для дальнейшей обработки.
Видеоадаптер содержит собственную память, из которой считывается информация – изображение. Для программ, интенсивно работающих с изображением, целесообразно формировать изображение сначала в ОП, а затем, программируя КПДП и видеоадаптер, осуществлять пересылку готового изображения из ОП в видеопамять.
Напрямую подключение монитора и клавиатуры к магистрали невозможно, для этого применяются специализированные контроллеры (видеоадаптер и контроллер клавиатуры соответственно).
12. Буфер TLB:
При страничной организации таблица страниц располагается в оперативной памяти. Для ускорения страничного преобразования процессор запоминают физические адреса часто используемых страниц виртуальной памяти в специальной области кэш-памяти, называемой TLB (Translation Lookaside Buffer). Блок TLB имеет фиксированный размер, его наличие и функционирование полностью прозрачно для прикладных программ.
В данном случае был реализован блок TLB в виде полностью ассоциативной кэш-памяти на 32 строки трансляции. Такой размер позволяет хранить информацию о трансляции 128Кб памяти (при размере страницы 4Кб), что в большинстве случаев дает коэффициент кэш попаданий 98%. Помимо адресов в строке дополнительно содержится служебная информация о странице (дескриптор страницы):
- бит действительности P(Present). Бит определяет, возможно ли использование данной строки для трансляции адреса. P=1 – данные действительны, P=0 – трансляция невозможна (строка действительна для записи или проч.)
- бит D(Dirty) – признак, устанавливающийся перед операцией записи по адресу, в преобразовании которого участвует данная строка. Помечается “грязная” страница, которую в случае замещения необходимо выгрузить на диск.
- A(Access). Признак доступа, устанавливается перед любым чтением или записью по адресу, в преобразовании которого участвует данная строка.
Для механизма защиты страницы используется два разряда:
- бит уровня доступа к странице. U/S#. U - пользовательский, S# - супервизор
- степень доступа к таблице R/W#. Read – страница доступна только для чтения, Write – и для чтения и для записи.
Два атрибута защиты могут составлять следующие комбинации:
U/S# | R/W# | Тип доступа |
0 | 0 | Супервизор |
0 | 1 | Супервизор |
1 | 0 | Пользовательский (чтение) |
1 | 1 | Пользовательский (чтение/запись) |
Строка буфера TLB имеет вид:
4640
LRU | R/W# | U/S# | D | P | Физический адрес | Линейный адрес |
Дескриптор при обращении к TLB запоминается в специальном выходном буфере и становится доступен при бите RDCPT (Read Descriptor), установленном в 0. Для записи дескриптора процессор должен выдать на локальную шину буфера текущий дескриптор с измененными битами и установить сигнал RDCPT = 1.
При изменении таблиц (и при изменении значений бита P в любых таблицах) необходима очистка буфера TLB, но при изменении отображения одиночной страницы возможна очистка только конкретного вхождения в TLB. При переключении задач буфер TLB очищается полностью (биты P каждой строки сбрасываются в 0, т. е. строка становится действительной для записи).
Поиск в буфере начинается при установлении в единицу сигнала FA (Find Address), при этом счетчик адресов начинает счет от 0 до 31. При разрешенном страничном управлении (установлен специальный бит в одном из регистров процессора), блок страничной переадресации получает 32-битный линейный адрес, его старшие 20 бит сравниваются со значениями из TLB, и, в случае попадания, физический адрес вычисляется по начальному адресу страницы, полученному из TLB, а затем вводится на шину адреса. Если строки в буфере нет, производится ее чтение из страничного каталога. Причем, пока идет обращение к памяти, в TLB ищется строка, которую можно заменить и в нее пишутся старшие 20 бит текущего адреса (в данный момент на шине присутствует линейный адрес). Замене подлежит только строка, наиболее давно не использовавшаяся (приоритет 000) и имеющая бит присутствия P = 0. Затем выставляется сигнал готовности к приему физического адреса и на шину выводится адрес из таблицы страниц, старшие 20 бит которого запоминаются в этой же строке.
Строки буфера заменяются по алгоритму LRU (Least Recently Used – наиболее давно не использовавшаяся страница замещается первой). Для этого зарезервировано 3 бита, в которых могут быть записаны следующие значения: 000, 011, 111. Замещению подлежит строка с приоритетом 000. При обращении к строке в случае кэш-попадания ее приоритет увеличивается по следующему правилу: 000->011, 011->111, в случае, если строка не подходит – уменьшается 111->011, 011-000. При записи новой строки ей присваивается статус 111.
При переключении задач необходим сброс буфера TLB, это происходит по внешнему сигналу CLR_TLB от процессора по указанной выше схеме.
Выигрыш в работе достигается за счет преобразования адресов не в медленной оперативной памяти, а в синхронной статической. Для реализации буфера понадобились следующие микросхемы:
- КР1554АП20 - восьмиразрядный двунаправленный приемопередатчик с регистром и тристабильными выходами;
- КР1554ИЕ10 – 4-разрядный двоичный счетчик с синхронной установкой и асинхронным сбросом;
- КР1554ЛЛ1 – 4 элемента 2ИЛИ;
- КР1554ЛН1 – 6 элементов НЕ;
- КР1554ЛИ6 – 2 элемента 4И;
- КР1554КП11 – 4-разрядный мультиплексор 2-1 с тристабильными выходами;
- КР531СП1 – схема сравнения двух 4-разрядных числе;
- КР531ИР23 – 8-разрядный буферный регистр с защелкой и тристабильными выходами;
На выбор повлияло, во-первых, доступность информации по элементам, во-вторых, достаточно высокие временные показатели (что необходимо для реализации кэш-памяти).
Счетчик (реализованный на двух микросхемах КР1554ИЕ10) считает от 0 до 31, выдавая на локальную шину адрес строки буфера TLB. Линейный адрес (хранится в битах 0-19 строки) сравнивается со старшими 20-ю битами на шине адреса и, в случае совпадения и установленного бита P=1, на шину адреса выдается 20-битный физический адрес страницы. По сигналу процессора (RDCPT) становится доступным дескриптор данной страницы. В случае, если ни одна строка не удовлетворяет условию (на выходе 6-го разряда счетчика появляется единица), вырабатывается сигнал Cash Miss, затем процессор должен выставить сигнал Cash This Address, по которому присутствующие на шине адреса старшие 20 бит (линейный адрес) запоминаются в подходящей строке и дальше поиск ведется в таблице страниц, расположенной в оперативной памяти. Когда поиск завершен и на шине присутствует физический адрес, процессор снова выставляет сигнал Cash This Address, по которому теперь запоминается физический адрес. Для предотвращения записи некорректной информации и гонок сигналов, на шине применяются буферные регистры (КР1554АП20).
13. Заключение:
14. Список литературы:
Угрюмов схемотехника. – СПб.: БХВ-Петербург, 2001. – 528с. Каган вычислительные машины и системы: Учебное пособие для вузов.-3-е изд.-М.: Энергоатомиздат, 1991.-592с.; Процессоры Pentium|||, Athlon и другие – СПб: Издательство “Питер”, 2000. – 480с. Мик Дж., Брик. Дж. Проектирование микропроцессорных устройств с разрядно-модульной организацией: В 2-х книгах. Пер. с англ.-М.: Мир, 1984.



