\documentclass[a4paper, 10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{fancyhdr}
\usepackage{caption}
\usepackage[left=1.5cm,right=1.5cm,top=2cm,bottom=1.5cm,bindingoffset=0cm]{geometry}
%\captionsetup{labelsep=period}
\pagestyle{fancy}
\usepackage{listings,longtable,amsmath,amsfonts,graphicx,tabularx}
\usepackage{float}

\lstset{
    basicstyle=\footnotesize,
    breakatwhitespace=false,
    breaklines=true,
    extendedchars=true,
    keepspaces=true,
    keywordstyle=\bfseries,
    numbers=left,
    numbersep=3pt,
    numberstyle=\tiny,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    stepnumber=1,
    stringstyle=\emph,
    tabsize=2
}

\usepackage[export]{adjustbox}

\usepackage{tikz}
\usetikzlibrary{arrows.meta,arrows,automata,positioning,calc}
\usetikzlibrary{chains,shapes.multipart}
\usetikzlibrary{shapes,calc}
\usetikzlibrary{automata,positioning}

\renewcommand{\headrulewidth}{0pt}
\fancyfoot[L] {\thepage\bf}
\fancyfoot[C] {}

\begin{document}
   \pagestyle{plain}

   \tableofcontents

   \newpage

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

\section{Выбор объекта исследования и описание концептуальной модели}
    \subsection{Описание объекта исследования}
    В качестве объекта исследования был выбран процесс обмена данными по
    интерфейсу UART.
    Алгоритм работы интерфейса состоит в следующем.
    \begin{itemize}
        \item Приём: \\
            На последовательный порт контроллера UART RX приходят данные, после
            обработки они записываются в буфер ( FIFO ) приёмника,
            контроллер генерирует прерывание и из приёмного буфера начинается
            считывание данных до опустошения буфра.
        \item Передача: \\
            В буфер ( FIFO ) передатчика происходит запись данных для отправки,
            передатчик считывает данные из буфера и отправляет их на
            последовательный порт RX.
    \end{itemize}
    Скорость работы интерфейса определяется бодрейтом и форматом бода.
    \begin{figure}[h!]
        \includegraphics[scale=0.3]{./images/uart.png}
        \caption{Схема интерфейса UART.}
    \end{figure}

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

    \begin{figure}[h!]
        \includegraphics[scale=0.5]{./images/system.png}
        \caption{Cхема исследуемой системы.}
    \end{figure}

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

    \subsection{Разработка концептуальной модели}

    \begin{figure}[h!]
        \includegraphics[scale=0.6]{./images/semo.png}
        \caption{Модель исследуемой системы.}
    \end{figure}

    В рамках исследования будем использовать следующие предположения и допущения.
    \begin{enumerate}
        \item Процессор обрабатывает лишь заявки с интерфейса.
        \item Запись и чтения из буффера проиходят мгновенно.
        \item Параметры узлов интерфейса расчитываются из
              конфигурации без учёта сложной структуры и различных
              физических явлений, влияющих на работу интерфейса.
        \item Параметры CPU и памяти расчитваются из частоты.
        \item Передача данных между узлами происходит мнговенно, структура
              каналов передачи не учитывается.
       \item Очередь заявок ограничена размером буферов; дисциплины обслуживания
              -- FIFO.
        \item При рассмотрении формата входящего сообщения, включающего бит
              контроля чётности, случаи с непрошедшими контроль сообщениями
              рассматриваться не будут.
        \item Интенсивности входных потоков равны.
    \end{enumerate}

    Параметры устройств.
    \begin{enumerate}
        \item Процессор: MIPS32, частота 10MHz, кэш 32 bytes.
        \item Память: кэш 32 bytes, 5 $\frac{\text{Kb}}{\text{sec}}$.
        \item Буфер контроллера памяти: 16 bytes.
        \item Начальный бод-рейт: 600 $\frac{\text{baud}}{\text{sec}}$
        \item Начальный формат слова: 8N1
        \item Размер буферов контроллера: 16 bytes.
    \end{enumerate}

    Входящие завяки ( $\lambda_{input}$ ) обрабатываются в узле S0, в котором
    выделается полезная нагрузка ( время обслуживания определяется бодрейтом
    и форматом сообщения ) и записывается в накопитель, из которого контроллер
    UART'а читает сообщение и отправляет заявку на запись сообщения
    в накопитель CPU ( $\lambda_{handle}$ ), если пришедшее сообщение валидно,
    в ином случае отправляет CPU команду на повторный запрос сообщения;
    CPU рассматривает заявку и отправляет её в накопитель ( $\lambda_{write}$ )
    контролера памяти. 

    Входящий запрос ( $\lambda_{transmit}$) на отправку данных попадает в
    накопитель CPU, которой обрабатывает запрос и отправляет его на контроллер
    UART; UART формирует сигнал и отправляет данные в буфер передатчика,
    который в свою очередь произведёт пересылку данных ( $\lambda_{output}$ ).

\section{Разработка моделей}

    \subsection{Разработка модели исследуемой системы}

        \begin{tikzpicture} [->,node distance=2cm]
            \tikzstyle{every state}=[fill=white,draw=black,thick,text=black,scale=1]
            \tikzstyle{inp}=[fill=white,draw=black,thick,text=black,scale=0.5,circle]

            \node[inp] (i0) {$ $};
            \node[left = 0.3cm of i0] {$\lambda_{input}(0_1)$};
            \node[state] (S0)[right of=i0]   {$S0$};
            \node[state] (S1)[below of=S0]   {$S1$};
            \node[state] (S2)[right of=S0]   {$S2$};
            \node[state] (S3)[right of=S2]   {$S3$};
            \node[state] (S4)[right of=S3]   {$S4$};
            \node[inp]   (i1)[below of=S3]   {$ $};
            \node[inp]   (i2)[below of=S1]   {$ $};
            \node[inp]   (i3)[right of=S4]   {$ $};
            \node[below = 0.1cm of i2] {$(0_2)$};
            \node[below = 0.1cm of i1] {$\lambda_{transmit}(0_4)$};
            \node[right = 0.1cm of i3] {$(0_3)$};

            \path
                   (i0) edge  (S0)
                   (i1) edge  (S3)
                   (S1) edge  (i2)
                   (S4) edge  (i3)
                   (S0) edge  (S2)
                   (S2) edge  (S1)
                   (S2) edge  (S3)
                   (S3) edge  (S4)
                   (S3) edge  (S2);
        \end{tikzpicture}

        \begin{description}
            \item[Количество узлов] 5.
            \item[Количество обслуживающих приборов в узлах] 1 в каждом узле.
            \item[Средние длительности обслуживания заявок в узлах (исходя из параметров реальной системы)] \hfill \ \\
                $b_0 = 0.1667*10^{-1} c$ \\
                $b_1 = 0.1667*10^{-1} c$ \\
                $b_2 = 10^{-5}c$ \\
                $b_3 = 10^{-5} c$ \\
                $b_4 = 10^{-4} c$ \\
        \end{description}

    \subsection{Разработка имитационной модели}
    % GPSS listing
    \subsubsection{Модель GPSSW}
    \lstinputlisting{../gpss/Model1.gps.txt}
    % Anylogic pic
    \subsubsection{Модель AnyLogic}
    \begin{figure}[h!]
        \includegraphics[scale=0.5]{./images/semo_anylogic.png}
        \caption{Модель исследуемой системы в среде AnyLogic.}
    \end{figure}


    \section{Результате экспериментов в GPSSW и AnyLogic}
    В ходе экспериментов варьировалось значение скорости UART. Исходя из
    данных параметров системы были выведены следующие значения времени
    обслуживания заявок, которые были заданы в процессе проведения экспериментов..

    \begin{table}[H]
        \begin{tabular}{|c|c|}
            \hline
            Скорость в бодах & Время обслуживания \\ \hline
            115200           & $0.87*10^{-4}$     \\ \hline
            9600             & $0.1042*10^{-2}$   \\ \hline
            600              & $0.16667*10^{-1}$  \\ \hline
        \end{tabular}
    \end{table}
    \subsection{Результаты для скорости в 600 бод при входном потоке в 0.01}
    \begin{tabular}{|c|c|c|c|}
        \hline
        Прибор   & Загрузка & Длина очереди \\ \hline
        UART\_RX & 0.999    &   0           \\ \hline
        UART\_TX & 0.466    &   0.328       \\ \hline
        UART     & 0.001    &   0           \\ \hline
        CPU      & 0.002    &   0           \\ \hline
        MEM      & 0.0013   &   0           \\ \hline

    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/600_e01_load.png}
        \includegraphics[scale=0.6]{./images/600_e01_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

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

    \subsection{Результаты для скорости в 9600 бод при входном потоке в 0.01}
    \begin{tabular}{|c|c|c|c|}
        \hline
        Прибор   & Загрузка & Длина очереди \\ \hline
        UART\_RX &    0.108 &   0           \\ \hline
        UART\_TX &    0.044 &   0.002       \\ \hline
        UART     &    0.002 &   0           \\ \hline
        CPU      &    0.000 &   0           \\ \hline
        MEM      &    0.016 &   0           \\ \hline
    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/9600_e01_load.png}
        \includegraphics[scale=0.6]{./images/9600_e01_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

    При увеличении скорости наблюдаем уменьшение загрузки на узле-приёмнике и
    длины очереди узле-отправителя.

    \subsection{Результаты для скорости в 115200 бод при входном потоке в 0.01}
    \begin{tabular}{|c|c|c|c|}
        \hline
        Прибор   & Загрузка & Длина очереди \\ \hline
        UART\_RX &    0.009 &   0           \\ \hline
        UART\_TX &    0.003 &   0           \\ \hline
        UART     &    0.002 &   0           \\ \hline
        CPU      &    0.002 &   0           \\ \hline
        MEM      &    0.016 &   0           \\ \hline
    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/115200_e01_load.png}
        \includegraphics[scale=0.6]{./images/115200_e01_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

    При повторном увеличении скорости загрузка приемника и отправителя модуля
    UART значительно упала, однако прошлые значения загрузок были достаточно
    низки для того, чтобы выбрать для данного входного потока скорость
    интерфейса в 9600 бод 

    Изменим интенсивность входящего потока.

    \subsection{Результаты для скорости в 600 бод при входном потоке в 0.001}
    \begin{tabular}{|c|c|c|c|}
        \hline
        Прибор   & Загрузка & Длина очереди \\ \hline
        UART\_RX &    0.978 &   0           \\ \hline
        UART\_TX &    0.959 &   13.837     \\ \hline
        UART     &    0.014 &   0.000     \\ \hline
        CPU      &    0.023 &   0.000     \\ \hline
        MEM      &    0.019 &   0.011       \\ \hline
    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/600_e001_load.png}
        \includegraphics[scale=0.6]{./images/600_e001_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

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

    \subsection{Результаты для скорости в 9600 бод при входном потоке в 0.001}
    \begin{tabular}{|c|c|c|}
        \hline
        Прибор   & Загрузка & Длина очереди \\ \hline
        UART\_RX & 0.956    &   0           \\ \hline
        UART\_TX & 0.404    &   0.220       \\ \hline
        UART     & 0.016    &   0.000       \\ \hline
        CPU      & 0.021    &   0.001       \\ \hline
        MEM      & 0.016    &   0.029        \\ \hline
    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/9600_e001_load.png}
        \includegraphics[scale=0.6]{./images/9600_e001_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

    При увеличении скорости ожидаемо уменьшилась загрузка, однако она всё ещё
    достаточно высока и по результатам GPSSW и AnyLogic.

    \subsection{Результаты для скорости в 115200  при входном потоке в 0.001}
    \begin{tabular}{|c|c|c|}
        \hline
        Прибор  & Загрузка & Длина очереди \\ \hline
        CPU     &  0.017   &   0.000     \\ \hline
        MEM     &  0.008   &   0.000     \\ \hline
        UART\_RX&  0.092   &   0.000    \\ \hline
        UART    &  0.015   &   0.000     \\ \hline
        UART\_TX&  0.033   &   0.001     \\ \hline
    \end{tabular}

    Результаты исследования в среде GPSSW.

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/115200_e001_load.png}
        \includegraphics[scale=0.6]{./images/115200_e001_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

    Проверим скорость в 115200 $\frac{\text{baud}}{\text{sec}}$ на более высоких
    показателях входных потоков (до $10^{-5}$).

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/115200_e00001_load.png}
        \includegraphics[scale=0.6]{./images/115200_e00001_queue.png}
        \caption{В среде Anylogic}
    \end{figure}

    Значения загрузок и длины очереди находятся в приемлимых диапазонах,
    не наблюдается перегрузок и заплонений буферов, из чего следует, что
    подходящая скорость при высоких ( до $10^{-5}$) интенсивностях входных
    потоков достаточной скоростью интерфейса UART будет 1152000
    $\frac{\text{baud}}{\text{sec}}$.

    Повысим интенсивность до $10^{-6}$

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/115200_e000001_load.png}
        \includegraphics[scale=0.6]{./images/115200_e000001_queue.png}
        \caption{115200 $\frac{\text{baud}}{\text{sec}}$}
    \end{figure}

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/230400_e000001_load.png}
        \includegraphics[scale=0.6]{./images/230400_e000001_queue.png}
        \caption{230400 $\frac{\text{baud}}{\text{sec}}$}
    \end{figure}

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/460800_e000001_load.png}
        \includegraphics[scale=0.6]{./images/460800_e000001_queue.png}
        \caption{460800 $\frac{\text{baud}}{\text{sec}}$}
    \end{figure}

    \begin{figure}[H]
        \includegraphics[scale=0.6]{./images/921600_e000001_load.png}
        \includegraphics[scale=0.6]{./images/921600_e000001_queue.png}
        \caption{921600 $\frac{\text{baud}}{\text{sec}}$}
    \end{figure}
    Система находится в перегруженном состоянии.

    \section{Вывод}

    В ходе выполнения курсовой работы была разработа вычислительная система,
    сводящаяся к модели массовго обслуживания -- разомкнутой сети массового
    обслуживания с неоднородным потоком заявок. Была построена модель системы,
    для которой выявились параметры, основанные на реальных параметрах
    вычислительных устройств и введёных допушениях и предположениях. Далее
    произвелась разработка имитационных моделей в системах имитационного
    моделирования GPSS World Student и AnyLogic Personal Learning Edition.

    Результаты моделирования в двух этих системах схожи по своей динамике
    измнений характеристик. При моделировании системы при входном потоке в
    $0.01$ исходная скорость в 600 $\frac{\text{baud}}{\text{sec}}$ даёт
    перегрузку приёмника, что может привести к ошибкам в разборе сообщений
    и утере оных. При более высоких скоростях перегрузок не наблюдается, а
    результаты моделирования схожи, вследствие чего на данную интенсивность
    была выбрана скорость в 9600 $\frac{\text{baud}}{\text{sec}}$. При повешении
    входной интенсивности при скоростях в 600 и 9600 $\frac{\text{baud}}{\text{sec}}$
    наблюдаются высокие показатели загрузок и длины очереди, что решается
    введением скорости в 115200 $\frac{\text{baud}}{\text{sec}}$, которая 
    выдерживает интенсивности входного потока до $10^{-5}$, при повышении
    интенсивности до $10^{-6}$ наблюдается перегрузка системы, которая остаётся
    при дальнейшем повышении скорости работы интерфейса, из чего следует,
    что данной таковой частоты системы интерфейс UART будет перегружен и
    нестабилен, однако стоит отметить, что UART не предназначен для
    высокоскоростных передач, ради которых разумнее использовать, к примеру, SPI.



\end{document}
