diff options
| author | Andrew <saintruler@gmail.com> | 2020-04-09 19:18:42 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2020-04-09 19:18:42 +0400 |
| commit | e1092fa26194b6d373b47d5a761b52a8940f3635 (patch) | |
| tree | 1387f8dbc0d2887e89edb4d5c264ec31bacc316f /abstracts/23_structure_of_cpu/23_structure_of_cpu.tex | |
Добавил первый реферат и первые две лабораторные
Diffstat (limited to 'abstracts/23_structure_of_cpu/23_structure_of_cpu.tex')
| -rw-r--r-- | abstracts/23_structure_of_cpu/23_structure_of_cpu.tex | 499 |
1 files changed, 499 insertions, 0 deletions
diff --git a/abstracts/23_structure_of_cpu/23_structure_of_cpu.tex b/abstracts/23_structure_of_cpu/23_structure_of_cpu.tex new file mode 100644 index 0000000..278d636 --- /dev/null +++ b/abstracts/23_structure_of_cpu/23_structure_of_cpu.tex @@ -0,0 +1,499 @@ +\documentclass[bachelor, och, referat]{SCWorks} +% параметр - тип обучения - одно из значений: +% spec - специальность +% bachelor - бакалавриат (по умолчанию) +% master - магистратура +% параметр - форма обучения - одно из значений: +% och - очное (по умолчанию) +% zaoch - заочное +% параметр - тип работы - одно из значений: +% referat - реферат +% coursework - курсовая работа (по умолчанию) +% diploma - дипломная работа +% pract - отчет по практике +% параметр - включение шрифта +% times - включение шрифта Times New Roman (если установлен) +% по умолчанию выключен + +\usepackage{subfigure} +\usepackage{tikz,pgfplots} +\pgfplotsset{compat=1.5} +\usepackage{float} + +%\usepackage{titlesec} +\setcounter{secnumdepth}{4} +%\titleformat{\paragraph} +%{\normalfont\normalsize}{\theparagraph}{1em}{} +%\titlespacing*{\paragraph} +%{35.5pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} + +\titleformat{\paragraph}[block] +{\hspace{1.25cm}\normalfont} +{\theparagraph}{1ex}{} +\titlespacing{\paragraph} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +% --------------------------------------------------------------------------% + + +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} +\graphicspath{ {./images/} } +\usepackage{tempora} + +\usepackage[sort,compress]{cite} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage{fancyvrb} +\usepackage{listings} +\usepackage{listingsutf8} +\usepackage{longtable} +\usepackage{array} +\usepackage[english,russian]{babel} + +\usepackage[colorlinks=true]{hyperref} +\usepackage{url} + + +\newcommand{\eqdef}{\stackrel {\rm def}{=}} + +\renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} + +\newtheorem{lem}{Лемма} + +\begin{document} + +% Кафедра (в родительном падеже) +\chair{} + +% Тема работы +\title{Общая структура центрального процессора} + +% Курс +\course{1} + +% Группа +\group{131} + +% Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ") +\department{факультета КНиИТ} + +% Специальность/направление код - наименование +%\napravlenie{09.03.04 "--- Программная инженерия} +%\napravlenie{010500 "--- Математическое обеспечение и администрирование информационных систем} +%\napravlenie{230100 "--- Информатика и вычислительная техника} +%\napravlenie{231000 "--- Программная инженерия} +\napravlenie{090301 "--- Компьютерная безопасность} + +% Для студентки. Для работы студента следующая команда не нужна. +% \studenttitle{Студентки} + +% Фамилия, имя, отчество в родительном падеже +\author{Гущина Андрея Юрьевича} + +% Заведующий кафедрой +% \chtitle{} % степень, звание +% \chname{} + +%Научный руководитель (для реферата преподаватель проверяющий работу) +\satitle{доцент} %должность, степень, звание +\saname{О.В. Мещерякова} + +% Руководитель практики от организации (только для практики, +% для остальных типов работ не используется) +% \patitle{к.ф.-м.н.} +% \paname{С.~В.~Миронов} + +% Семестр (только для практики, для остальных +% типов работ не используется) +%\term{8} + +% Наименование практики (только для практики, для остальных +% типов работ не используется) +%\practtype{преддипломная} + +% Продолжительность практики (количество недель) (только для практики, +% для остальных типов работ не используется) +%\duration{4} + +% Даты начала и окончания практики (только для практики, для остальных +% типов работ не используется) +%\practStart{30.04.2019} +%\practFinish{27.05.2019} + +% Год выполнения отчета +\date{2020} + +\maketitle + +% Включение нумерации рисунков, формул и таблиц по разделам +% (по умолчанию - нумерация сквозная) +% (допускается оба вида нумерации) +\secNumbering + + +\tableofcontents + +% Раздел "Обозначения и сокращения". Может отсутствовать в работе + + +% Раздел "Определения". Может отсутствовать в работе +%\definitions + +% Раздел "Определения, обозначения и сокращения". Может отсутствовать в работе. +% Если присутствует, то заменяет собой разделы "Обозначения и сокращения" и "Определения" +% \defabbr + +% Раздел "Введение" +% \intro +\section{Общая структура центрального процессора} +\subsection{Процессор} +Центральный процессор -- это мозг компьтера. Его задача -- выполнять программы, +находящиеся в основной памяти. Для этого он вызывает команды из памяти, определяет +их тип, а затем выполняет одну за другой. Компоненты соединены \textbf{шиной}, +представляющей собой набор параллельно связанных проводов для передачи адресов, +данных и управляющих сигналов. Шины могут быть внешними (связывающими процессор с +памятью и устройствами ввода-вывода) и внутренними. Современный компьютер использует +несколько шин. На рисунке \ref{fig:onecpu_comp} изображёна схема компьютера с одним +процессором и двумя устройствами ввода-вывода. + +\begin{figure}[H] + \centering + \includegraphics{image008.jpg} + \caption{Схема однопроцессорной системы} + \label{fig:onecpu_comp} +\end{figure} + +Процессор состоит из нескольких частей. Блок управления отвечает за вызов команд +из памяти и определение их типа. Арифметико-логическое устройство выполняет +арифметические операции (например, сложение) и логические операции (например, +логическое И). + +\subsection{Устройство центрального процессора} +Внутреннее устройство тракта данных типичного фон неймановского процессора +иллюстрирует рисунок \ref{fig:data-tract}. Тракт данных состоит из регистров +(обычно от 1 до 32), арифметико-логического устройства (АЛУ) и нескольких +соединительных шин. Содержимое регистров поступает во входные регистры АЛУ, +которые на рисунке \ref{fig:data-tract} обозначены буквами А и В. В них +находятся входные данные АЛУ, пока АЛУ производит вычисления. + +АЛУ выполняет сложение, вычитание и другие простые операции над входными данными +и помещает результат в выходной регистр. Содержимое этого выходного регистра +может записываться обратно в один из регистров или сохранятся в памяти, если +это необходимо. Рисунок \ref{fig:data-tract} иллюстрирует операцию сложения. +Отметим, что входные и выходные регистры есть не у всех компьютеров. + +Большинство команд можно разделить на две группы: типа регистр-память и типа +регистр-регистр. Команды первого типа вызывают слова из памяти, помещают их +в регистры, где они используются в качестве входных данных АЛУ +(слова -- это такие элементы данных, которые перемещаются между памятью и +регистрами). Словом может быть целое число. Другие команды этого типа +помещают регистры обратно в память. + +Команды второго типа вызывают два операнда из регистров, помещают их во +входные регистры АЛУ, выполняют над ними какую-нибудь арифметическую или +логическую операцию и переносят результат обратно в один из регистров. + +Этот процесс называется циклом тракта данных. В какой-то степени он +определяет, что может делать машина. Чем быстрее происходит цикл тракта +данных, тем быстрее компьютер работает. + +\begin{figure}[H] + \centering + \includegraphics{tract_data.png} + \caption{Тракт данных обычной фон-неймановской машины} + \label{fig:data-tract} +\end{figure} + +\subsection{Устройство управления} +\textbf{Устройство управления} процессором -- блок, устройство, компонент +аппаратного обеспечения компьютеров. Представляет собой конечный дискретный автомат. +Структурно устройство управления состоит из: +\begin{itemize} + \item + Блок генерации адресов инструкций. Он содержит в себе регистр + программного счётчика (program counter или instruction pointer), + хранящий адрес считываемой из памяти инструкции, и модифицирующийся + после выборки каждой инструкции. + \item + Блок выборки инструкции, обеспечивающий считывание программ из памяти + через устройство ввода-вывода. Он получает на вход адрес с блока генерации + адреса инструкции, передаёт его на УВВ, получает с него данные по + переданному адресу, и выдаёт на блок декодирования интсрукций. + \item + Блок декодирования инструкций, производящий преобразование кодов инструкций в + последовательность кодов функций, передаваемые на исполнительные устройства. + \item + Блок переходов. Получает функциональные коды переходов и ветвлений, признаки + результатов операций с функциональных устройств, проверяет истинность условия + перехода, и передаёт сигнал на изменение программного счётчика. + \item + Блок обработки исключений. Принимает извне сигналы исключительных ситуаций + (прерывания, ошибки узлов микропроцессора, нарушение привилегий, + команды-ловушки и пр.) и передаёт сигнал на переход по вектору исключения + в случае обнаружения. +\end{itemize} + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{control_unit_block.png} + \caption{Обобщенная блок-схема устройства управления} + \label{} +\end{figure} + +\subsection{Арифметико-логическое устройство} +\textbf{Арифметико-логическое устройство} -- блок процессора, который под +управлением устройства управления (УУ) служит для выполнения арифметических +и логических преобразований (начиная от элементарных) над данными, называемыми +в этом случае операндами. Разрядность операндов обычно называют размером +или длиной машинного слова. + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{alu_block.png} + \caption{Обобщенная блок-схема арифметико-логического устройства} + \label{} +\end{figure} + +Одноразрядное двоичное бинарное (двухоперандное) АЛУ с бинарным +(двухразрядным) выходом может выполнять до +${\displaystyle 2^{(2^{2})*2}=2^{8}=256}$ двоичных бинарных +(двухоперандных) функций (операций) с бинарным (двухразрядным) выходом. + +По способу действия над операндами АЛУ делят на: +\begin{enumerate} + \item + Параллельные -- операнды представляются параллельным кодом и + операции совершаются одновременно над всеми разрядами операндов. + \item + Последовательные -- операции над операндами производятся последовательно + во времени над их отдельными разрядами. +\end{enumerate} + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{alu.png} + \caption{Схема арифметико-логического устройства (АЛУ) К155ИП3} + \label{} +\end{figure} + +\subsection{Регистры процессора} +Внутри центрального процессора находится быстрая память небольшого объёма для +хранения промежуточных результатов и некоторых команд управления. Эта память +состоит из нескольких регистров, каждый из которых выполняет определённую +функцию. Обычно размер всех регистров одинаков. Каждый регистр содержит +одно число в диапазоне, верхняя граница которого зависит от размера регистра. +Операции чтения и записи с регистрами выполняются очень быстро, поскольку они +находятся внутри центрального процессора. + +Самый важный регистр -- \textbf{счётчик команд}, который указывает, какую +команду нужно выполнить следующей. Название ``счётчик команд'' выбрано неудачно, +посколько он ничего не \textit{считает}, но этот термин употребляется повсеместно. +Также есть \textbf{регистр команд}, в котором находится выполняемая в данный момент +команда. У большинства компьютеров имеются и другие регистры, одни из них +многофункциональны, другие служат каким-либо определённым целям. Третьи регистры +используются операционной системой для управления компьютером. + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{registers_x86.png} + \caption{Регистры x86-совместимого процессора} + \label{} +\end{figure} + +\subsection{Выполнение команд} +Центарльный процессор выполняет каждую команду за несколько шагов. +Он делает следующее: + +\begin{enumerate} + \item Вызывает следующую команду из памяти и переносит её в регистр команд. + \item + Меняет положение счётчика команд, который после этого/ + указывает на следующую команду. + \item Определяет тип вызванной команды. + \item Если команда использует слово из памяти, определяет, где находится это слово. + \item Переносит слово, если это необходимо, в регистр центрального процессора. + \item Выполняет команду. + \item Переходит к шагу 1, чтобы начать выполнение следующей команды. +\end{enumerate} + +Такая последовательность шагов +(\textbf{выборка} -- \textbf{декодирование} -- \textbf{исполнение}) +является основой работы всех компьютеров. + +\subsection{Интерпретаторы} +Написание программ-интерпретаторов, которые имитируют работу процессора, +широко используется при разработке компьютерных систем. После того как +разработчики выбрали машинный язык (Я) для нового компьютера, они должны +решить, строить ли им процессор, который будет выполнять программы на +языке Я, или написать специальную программу для интерпретации программ +на языке Я. Если они решают написать интерпретатор, они должны создать +аппаратное обеспечение для выполнения этого интерпретатора. Возможны +также гибридные конструкции, когда часть команд выполняется аппаратным +обеспечением, а часть интерпретируется. + +Интерпретатор разбивает команды на маленькие шаги. Таким образом, машина +с интерпретатором может быть гораздо проще по строению и дешевле, чем +процессор, выполняющий программы без интерпретации. Такая экономия +особенно важна, если компьютер содержит большое количество сложных команд +с различными опциями. В сущности, экономия проистекает из самой замены +аппаратного обеспечения программным обеспечением (интерпретатором). + +Первые компьютеры содержали небольшое количество команд, и эти команды +были простыми. Но поиски более мощных компьютеров привели, кроме всего +прочего, к появлению более сложных команд. Вскоре разработчики поняли, +что при наличии сложных команд программы выполняются быстрее, хотя +выполнение отдельных команд занимает больше времени. +(В качестве примеров сложных команд можно назвать выполнение операций +с плавающей точкой, обеспечение прямого доступа к элементам массива и т.п.) +Если обнаруживалось, что две определенные команды часто выполнялись +последовательно одна за другой, то вводилась новая команда, заменяющая +работу этих двух. + +\begin{figure}[H] + \centering + \includegraphics{ibm_701.jpg} + \caption{IBM-710 -- Один из первых компьютеров} + \label{} +\end{figure} + +Сложные команды были лучше, потому что некоторые операции иногда +перекрывались. Какие-то операции могли выполняться параллельно, +для этого использовались разные части аппаратного обеспечения. +Для дорогих компьютеров с высокой производительностью стоимость этого +дополнительного аппаратного обеспечения была вполне оправданна. +Таким образом, у дорогих компьютеров было гораздо больше команд, +чем у дешевых. Однако развитие программного обеспечения и требования +совместимости команд привели к тому, что сложные команды стали использоваться +и в дешевых компьютерах, хотя там во главу угла ставилась стоимость, а не +скорость работы. + +К концу 50-х годов компания IBM, которая лидировала тогда на компьютерном +рынке, решила, что производство семейства компьютеров, каждый из которых +выполняет одни и те же команды, имеет много преимуществ и для самой компании, +и для покупателей. Чтобы описать этот уровень совместимости, компания IBM +ввела термин \textbf{архитектура}. Новое семейство компьютеров должно +было иметь одну общую архитектуру и много разных разработок, различающихся по +цене и скорости, которые могли выполнять одну и ту же программу. Но как +построить дешевый компьютер, который будет выполнять все сложные команды, +предназначенные для высокоэффективных дорогостоящих машин? + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{IBM_S360.jpg} + \caption{IBM System/360} + \label{} +\end{figure} + +Решением этой проблемы стала интерпретация. Эта технология, впервые предложенная +Уилксом в 1951 году, позволяла разрабатывать простые дешевые компьютеры, которые, +тем не менее, могли выполнять большое количество команд. В результате IBM создала +архитектуру System/360, семейство совместимых компьютеров, различных по цене и +производительности. Аппаратное обеспечение без интерпретации использовалось только +в самых дорогих моделях. + +\subsection{RISC и CISC} +В конце 70-х годов проводилось много экспериментов с очень сложными командами, +появление которых стало возможным благодаря интерпретации. Разработчики +пытались уменьшить пропасть между тем, что компьютеры способны делать, и тем, +что требуют языки высокого уровня. Едва ли кто-нибудь тогда думал о разработке +более простых машин, так же как сейчас мало кто занимается разработкой менее +мощных операционных систем, сетей, редакторов и т. д. (к несчастью). + +В компании IBM группа разработчиков во главе с Джоном Коком противостояла +этой тенденции; они попытались воплотить идеи Сеймура Крея, создав экспериментальный +высокоэффективный мини-компьютер 801. Хотя IBM не занималась сбытом этой машины, +а результаты эксперимента были опубликованы только через несколько лет, весть быстро +разнеслась по свету, и другие производители тоже занялись разработкой подобных +архитектур. + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{ibm801.jpg} + \caption{IBM-801} + \label{} +\end{figure} + +В 1980 году группа разработчиков в университете Беркли во главе с +Дэвидом Паттерсоном и Карло Секвином начала разработку процессоров VLSI без +использования интерпретации. Для обозначения этого понятия они придумали термин +RISC и назвали новый процессор RISC I, вслед за которым вскоре был выпущен RISC II. +Немного позже, в 1981 году, Джон Хеннеси в Стенфорде разработал и выпустил другую +микросхему, которую он назвал MIPS. Эти две микросхемы развились в коммерчески +важные продукты SPARC и MIPS соответственно. + +\begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{risc_2.jpg} + \caption{Чип RISC II} + \label{} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{mips.jpg} + \caption{Чип MIPS} + \label{} +\end{figure} + + + +В то время как разрабатывались эти простые процессоры, всеобщее внимание привлекало +относительно небольшое количество команд (обычно их было около 50). +Для сравнения: число команд в DEC VAX и больших IBM в то время составляло от 200 +до 300. RISC -- это сокращение от Reduced Instruction Set Computer -- компьютер +с сокращенным набором команд. RISC противопоставлялся CISC +(Complex Instruction Set Computer -- компьютер с полным набором команд). +В качестве примера CISC можно привести VAX, который доминировал в то время в +научных компьютерных центрах. На сегодняшний день мало кто считает, что главное +различие RISC и CISC состоит в количестве команд, но название сохраняется до сих пор. + +С этого момента началась грандиозная идеологическая война между сторонниками +RISC и разработчиками VAX, Intel и больших IBM. По их мнению, наилучший +способ разработки компьютеров -- включение туда небольшого количества +простых команд, каждая из которых выполняется за один цикл тракта данных, +то есть берет два регистра, производит над ними какую-либо арифметическую или +логическую операцию и помещает результат обратно в регистр. В качестве аргумента +они утверждали, что даже если RISC должна выполнять 4 или 5 команд вместо одной, +которую выполняет CISC, притом что команды RISC выполняются в 10 раз быстрее +(поскольку они не интерпретируются), он выигрывает в скорости. Следует +также отметить, что к этому времени скорость работы основной памяти приблизилась +к скорости специальных управляющих постоянных запоминающих устройств, потому +недостатки интерпретации были налицо, что повышало популярность компьютеров RISC. + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{dec_vax.jpg} + \caption{Компьютер из серии DEC VAX} + \label{} +\end{figure} + + +% Раздел "Заключение" +% \conclusion + + +%Библиографический список, составленный вручную, без использования BibTeX +% +\begin{thebibliography}{99} + \bibitem{8086} \url{https://ru.bmstu.wiki/Intel_8086} + \bibitem{Tannenbaum} Э.Танненбаум "Архитектура компьютера" (6-e издание) + \bibitem{RISC} \url{http://users.ics.forth.gr/~kateveni/risc/index.html} + \bibitem{ALU} \url{https://digteh.ru/proc/ALU/} + \bibitem{IBM} \url{https://ru.wikipedia.org/wiki/IBM} +\end{thebibliography} + +%Библиографический список, составленный с помощью BibTeX +%\bibliographystyle{mdpi} +\bibliographystyle{gost780uv} +\bibliography{thesis} + +% Окончание основного документа и начало приложений +% Каждая последующая секция документа будет являться приложением + +\appendix + + +\end{document}
\ No newline at end of file |