<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Investigation of the RAM access model in a heterogeneous computing system</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Aleksander Kolpakov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aleksey Belov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yuriy Kropotov</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Electronics and</institution>
          ,
          <addr-line>Computer Science</addr-line>
          ,
          <institution>Vladimir State University named after, Alexander and Nicholay Stoletovs</institution>
          ,
          <addr-line>Murom, Russia, ORCID: 0000-0001-9328-2331</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Electronics and</institution>
          ,
          <addr-line>Computer Science</addr-line>
          ,
          <institution>Vladimir State University named after, Alexander and Nicholay Stoletovs</institution>
          ,
          <addr-line>Murom, Russia, ORCID: 0000-0002-2072-7042</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Department of Electronics and</institution>
          ,
          <addr-line>Computer Science</addr-line>
          ,
          <institution>Vladimir State University named after, Alexander and Nicholay Stoletovs</institution>
          ,
          <addr-line>Murom, Russia, ORCID: 0000-0002-9012-3092</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>11</fpage>
      <lpage>14</lpage>
      <abstract>
        <p>-The issue of creating high-performance computing systems based on heterogeneous computer systems is topical, since the volumes of processed information, calculations and studies with large data sets are constantly increasing. The aim of the work is an experimental study of previously developed models for predicting the performance of heterogeneous computer systems in telecommunications. As a result, the study showed that the developed models allow us to obtain an adequate estimate of the possible time of the algorithm for various parameters of the GPU with some limitations.</p>
      </abstract>
      <kwd-group>
        <kwd>graphic processor computing systems</kwd>
        <kwd>parallel calculations</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>INTRODUCTION</p>
      <p>One of the most dynamically developing areas in parallel
programming at the moment is the use of computer systems
with a heterogeneous architecture, in which there are
computing devices with different architectures and,
accordingly, with different methods of using parallel
computing. The most common approach in the design of such
systems was the use of graphic video cards or devices based
on them as the main parallel calculator. This growing need for
solving big problems stimulates research and innovation in the
field of parallel computing in general and in the development
of methods for graphic processors in particular.</p>
      <p>II. RESEARCH AND DEVELOPMENT OF MODELS OF
HETEROGENEOUS COMPUTING SYSTEMS BASED ON GRAPHICS</p>
      <p>PROCESSORS</p>
      <p>Modern graphic processors (GPUs) are parallel
processors. More precisely, they are known as stream
processors because they are capable of performing various
functions in the incoming data stream. They represent
advanced architectures that are designed for parallel
processing of data (primarily graphic). They are currently
extremely powerful programmable processors, MIMD
architecture capabilities with some limitations.</p>
      <p>
        As technology, languages, and hardware evolved,
researchers were able to leverage the added flexibility of
GPUs when deploying non-graphical applications to the GPU
(GPGPU), especially when processing images. A more
detailed history of the development of GPGPU is presented in
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>A further development momentum was the emergence of
CUDA, the NVIDIA C-based development environment for
GPGPUs. CUDA allows developers unfamiliar with graphical
programming to write code that can be executed on the GPU.
CUDA provides the necessary abstractions for the developer
to write multi-threaded programs with little or no knowledge
of the graphics APIs. Since then, many implementations of
parallelized applications have been developed for GPUs,


Copyright © 2020 for this paper by its authors.</p>
      <p>Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0)
many of which offer significant acceleration compared to
sequential implementations on the processor.</p>
      <p>
        A model of the upper bound for the running time of an
algorithm on a graphics processor in a CPU-GPU environment
is presented in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and is based on an abstract PRAM model
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The upper estimate of the running time of the algorithm
on a graphics processor in a CPU-GPU environment
according to this model is calculated according to the formula
below
      </p>
      <p>T GPU ( N ) </p>
      <p>N HD ( N )</p>
      <p>S HD</p>
      <p>B ( N )
  T i G ( N ) 
i 1</p>
      <p>N DH ( N ) </p>
      <p>S DH</p>
      <p>
        This model does not account for certain features of the
graphics processor, such as the size of a warp-to GPU memory
access time, etc., however, the GPGPU performance
prediction model, which is a combination of known parallel
computing models, was given in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Given the complex
architecture of the GPU, none of these models is complete,
and it takes a combination of them along with a few
extensions. The following models were used during
development:
      </p>
    </sec>
    <sec id="sec-2">
      <title>1) The PRAM model [3].</title>
    </sec>
    <sec id="sec-3">
      <title>2) The BSP model [5].</title>
    </sec>
    <sec id="sec-4">
      <title>3) The QRQW model [6].</title>
    </sec>
    <sec id="sec-5">
      <title>The final equation of this model is:</title>
      <p>T ( K ) </p>
      <p>N B ( K )  N w ( K )  N t ( K )  C T ( K ) 
</p>
      <p>N C  D  R
All parameters of this model are shown in table 1.</p>
      <p>THE LIST OF DEVELOPED MODEL PARAMETERS
Parameter</p>
      <p>D
Nc</p>
      <p>R
Ct(K)</p>
      <p>Description</p>
      <p>The kernel pipeline depth
The number of cores per SM</p>
      <p>GPU Clock
The maximum number of ticks consumed by</p>
      <p>any thread in the kernel K
Number of threads in warp = 32
The number of warps per block
The number of blocks per kernel
i-th kernel on the GPU
Time spent by kernel K</p>
      <p>Time spent by program P</p>
      <p>
        The performance of the CUDA kernel can vary greatly
with slight changes depending on memory access strategies.
Using shared memory can provide up to 20 times better
performance than using global memory, and using shared
global memory access can lead to 5 times better performance
compared to non-coalesced access. Arithmetic operations also
require a different number of cycles to perform, for example,
operations such as integer summation require 4 cycles, while
calculating an integer module takes 48 cycles [
        <xref ref-type="bibr" rid="ref7 ref8">7,8</xref>
        ]. Any
model that does not capture these changes is unlikely to be
accurate.
      </p>
      <p>USING GPU MEMORY ACCESS PATTERNS TO IMPROVE
HETEROGENEOUS COMPUTING SYSTEM PERFORMANCE
Since the access delay when reading data from the global
memory of the GPU is up to 200 times higher, than reading
data from the registers, providing the most efficient way to
access the GPU RAM is crucial to improve the performance
of the GPU in particular and the heterogeneous system as a
whole. Therefore, optimizing global memory access is
becoming the single most important programming factor for
the GPGPU architecture.</p>
      <p>The GPU global memory reads and writes data in half
warp threads (16 threads), which are optimized by the device
in just one global memory transaction if certain access
requirements are met. For the GTX 280 video card, the
following protocol is used to determine the number of
transactions used by the halfwarp:</p>
      <p>1) Implemented search memory segment, which contains
the address inquiry from the active thread with the lowest
number. The segment size is 32 bytes for 8-bit data, 64 bytes
for 16-bit data, and 128 bytes for 32-, 64- and 128-bit data.</p>
      <p>a) if the transaction size is 128 bytes and only the upper
or lower half of the segment is used, the transaction size is
reduced to 64 bytes;</p>
      <p>b) if the transaction size is 64 bytes and only the lower
or upper half is used, the transaction size is reduced to 32
bytes.</p>
      <p>2) A transaction is in progress, serviced threads are marked
as inactive.</p>
      <p>3) Repeated until all threads in the halfwarp are serviced.</p>
      <p>When more than one thread requests data from addresses,
that fall into the same segment, one transaction can satisfy all
such threads. This service of multiple requests in a single
transaction is called coalescing. Thus, it is obvious that certain
GPU memory access patterns will necessarily have a positive
effect, while others will gradually increase the delay as the
memory addresses requested by the halfwarp threads diverge.</p>
      <p>The shared memory of the GPU is divided into memory
modules of the same size, called banks, which can be accessed
simultaneously by several threads. Thus, any request to read
or write to the memory, consisting of n addresses, that fall into
n separate memory banks, can be carried out simultaneously,
which gives an effective throughput that is n times higher than
the throughput of one module. However, if two memory
request addresses fall into the same memory bank, a bank
conflict occurs and access must be serialized. The GPU
divides memory access requests with bank conflicts into as
many individual requests without conflicts as necessary,
reducing the effective bandwidth by a factor equal to the
number of individual memory requests. For GTX280, the size
of the warp is 32, and the number of banks is 16. Access to
shared memory for warp is divided into one request for the
first half of warp and one request for the second half of warp.
As a result, there can be no conflict of the bank between a
thread belonging to the first half of the warp and a thread
belonging to the second half of the same warp.</p>
      <p>Shared memory also has a broadcast mechanism that
allows you to read a 32-bit word and broadcast it to multiple
threads at the same time with one transaction to read from
memory. This reduces the number of conflicts in the bank
when several threads of the halfwarp are read from the address
within the same 32-bit word. More precisely, a memory read
request made to several addresses are served in several stages
over time – one step every two cycles, serving one
conflictfree subset of these addresses per step, until all addresses are
served. At each step, a subset is constructed from the
remaining addresses that have yet to be served using the
following procedure:</p>
      <p>1) Select one of the words indicated by the remaining
addresses as the translated word.</p>
      <p>2) Include in a subset:
a) all addresses that are within the broadcast word;
b) one address for each bank indicated in the remaining
addresses.</p>
      <p>The space of constant memory is cached, so reading from
constant memory is delayed as in the case of reading from
global memory only if there is no cache, otherwise a
transaction from constant cache is performed. For all threads,
halfwarp reads from the constant cache as fast as reads from
registers if all threads read the same address. Access time
scales linearly depending on the number of different
addresses read by all threads.</p>
      <p>Texture memory allows to cache data present in global
memory. If a cached item is requested, then it is served in a
single request. The lack of a cache results in a global memory
read operation, which takes much longer.</p>
      <p>To compare the access time to different types of memory,
1,000,000 read operations from each type of memory were
performed. Access was performed both sequentially and
randomly. Tests were performed using the NVIDIA GTX280
GPU. The results are presented in Table 2. As you can see,
shared memory provides the best performance, followed by a
constant cache, and then a texture cache. Global memory
shows the highest latency.</p>
      <p>For most parallel computing platforms, modeling memory
access patterns and their associated costs is the most complex
and most important part. The following algorithm is used to
experimentally verify statements about the process of
accessing memory on the GPU:</p>
      <p>Algorithm 1 Global Memory Access Benchmark</p>
      <p>Input data: number of elements N, step stride, offset offset,
array A in global memory.</p>
      <p>1: Calculate the number of elements in the thread, Nthread;</p>
      <p>2: Calculate the data range of this thread, using stride and
offset;
model presented above adequately describes the performance
of GPGPU.</p>
    </sec>
    <sec id="sec-6">
      <title>3: while index is in the range do 4: 5: 6:</title>
      <p>Using the above algorithm, the experiment was simulated,
that shows how much gain from sharing depends on the
number of threads in the warp. This is controlled by the stride
variable. Stride denotes the gap between elements, that are
accessed sequentially by a single thread. Consequently,
threads in halfwarp can take advantage of coalesced access, if
the stride value is large. For example, when stride = 32, each
warp thread receives consecutive elements, which ensures
complete union. When stride is 1, each thread reads one
element that is offset by 32, so they are not completely merged
and require 16 memory transactions that will be serviced for
halfwarp. To ensure a fair comparison, in the above code the
number of hits on the stream does not depend on stride.</p>
      <p>
        In the code shown in algorithm 1, the number of
calculations per iteration is very small compared to the
memory access delay for stride = 1. However, as the stride
value increases, memory access and calculations take
approximately the same number of clock cycles. Using the
MAX model, we can assume the runtime of this kernel and
compare it with the actual one in Figure 1. The program
execution graph is shown for various stride values. It should
be noted that the basic access code only for memory, that is,
with a small number of calculations, differs from the model,
due to limited information about the hardware [
        <xref ref-type="bibr" rid="ref10 ref9">9,10</xref>
        ].
V.
      </p>
      <p>EXPERIMENTAL VERIFICATION OF THE IMPACT
OF ACCESS CONFLICTS WHEN USING SHARED MEMORY</p>
      <p>In this experiment, while maintaining the general structure
of global memory accesses, as in the previous experiment,
each thread writes an element to the shared memory. The
shared memory access pattern is controlled by the bank
variable, which can be set to a value from 0 to 16. With a larger
bank value, we can thus increase the number of access
conflicts.</p>
      <p>Algorithm 2 Shared Memory Access Benchmark</p>
      <p>Input data: number of elements N, step stride, offset offset,
control variable bank, array A in global memory, array B in
shared memory.</p>
      <p>1: Calculate the number of elements in the thread, Nthread;
2: Calculate the data range of this thread, using stride and
offset;
3: while index is in the range do</p>
      <p>for i = 0 to 10000 do
4:
5:
6:
7:</p>
      <p>end for</p>
    </sec>
    <sec id="sec-7">
      <title>8: end while</title>
    </sec>
    <sec id="sec-8">
      <title>Reading A[index] and save it back;</title>
      <p>B [IDthread × bank (mod sizeblock)];</p>
      <p>
        The kernel in this algorithm has about 16 cycles of
calculation per iteration, and there are 64,000 iterations. The
number of clock cycles required to access the memory is about
bank × 4 per iteration [
        <xref ref-type="bibr" rid="ref11 ref12 ref13">11,12,13</xref>
        ]. Actual lead time and lead
time predicted by the developed model are shown in Figure 2.
      </p>
      <p>As can be seen from Figure 1, the value of stride
significantly affects the execution time of the algorithm.
Because the amount of operations of the actual calculations in
the algorithm is very small, then from the graph you can see
that to increase the performance of the parallel algorithm it is
necessary to read the array elements located at a distance from
each other by no less than the value of warp to take advantage
of the combined access to memory. It can also be seen from
Figure 1 that although the graph of the predicted lead time
does not coincide with the graph of the actual time, it also
allows the predicted lead time to obtain enough information
about the decrease in performance while decreasing the
distance between the read elements. This suggests that the</p>
      <p>
        As can be seen from Figure 2, there is a linear dependence
of the number of conflicts on the execution time of the
program. Thus, to increase the performance of parallel
algorithms, it is necessary to exclude the intersection of the
read data for different threads [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Also from Figure 2 we can
conclude that the presented model allows us to adequately
estimate the execution time of the algorithm in the presence of
memory conflicts, although it does not provide accurate
information due to the closed hardware platform.
      </p>
      <p>CONCLUSIONS</p>
      <p>This paper presents an experimental study of previously
developed models for predicting the performance of a
heterogeneous computer system in telecommunications. The
study showed that the developed models allow us to obtain an
adequate estimate of the possible time of the algorithm for
various parameters of the GPU. However, it is worth noting
that the estimate obtained using the developed models is not
accurate, because average access time is used for all levels of
the memory hierarchy. In the future, it is planned to finalize
the models taking into account the use of the amount of
memory access time, obeying a rank distribution, for example,
Pareto or Zipf.</p>
      <p>ACKNOWLEDGMENT</p>
      <p>The work was carried out under a grant from the president
of the Russian Federation for state support of young Russian
scientists № МК-2378.2020.9.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.D.</given-names>
            <surname>Owens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Luebke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Govindaraju</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Harris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kruger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.E.</given-names>
            <surname>Lefohn</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.J.</given-names>
            <surname>Purcell</surname>
          </string-name>
          , “
          <article-title>A survey of general-purpose computation on graphics hardware,” Computer Graphics Forum</article-title>
          , vol.
          <volume>26</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>80</fpage>
          -
          <lpage>113</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Kolpakov</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          , “
          <article-title>Development of a model for predicting the performance of a heterogeneous computer system in telecommunications</article-title>
          ,
          <source>” Proceedings of ITNT</source>
          , Samara National Research University, pp.
          <fpage>2265</fpage>
          -
          <lpage>2274</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Fortune</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Wyllie</surname>
          </string-name>
          , “Parallelism in Random Access Machines,
          <source>” Proceedings of 10th Annual ACM Symposium on Theory of Computing (STOC)</source>
          , ACM New York, NY, USA, pp.
          <fpage>114</fpage>
          -
          <lpage>118</lpage>
          ,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Kolpakov</surname>
          </string-name>
          , “
          <article-title>Experimental study of the model for predicting the performance of a heterogeneous computer system in telecommunications</article-title>
          ,
          <source>” 12th International Scientific and Technical Conference Dynamics of Systems, Mechanisms and Machines</source>
          , Dynamics,
          <year>2019</year>
          . DOI:
          <volume>10</volume>
          .1109/Dynamics.
          <year>2018</year>
          .
          <volume>8601478</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>L.G.</given-names>
            <surname>Valiant</surname>
          </string-name>
          , “
          <article-title>A Bridging Model for Parallel Computation,” Communications of the ACM</article-title>
          , vol.
          <volume>33</volume>
          , no.
          <issue>8</issue>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>111</lpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P.B.</given-names>
            <surname>Gibbons</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Matias</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Ramachandran</surname>
          </string-name>
          , “
          <article-title>The Queue-Read Queue-Write PRAM Model: Accounting for Contention in Parallel Algorithms,”</article-title>
          <source>SIAM Journal of Computation</source>
          , vol.
          <volume>28</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>733</fpage>
          -
          <lpage>769</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>CUDA C Programming</surname>
          </string-name>
          <article-title>Guide [Online]</article-title>
          . URL: http://docs.nvidia.com/ cuda/pdf/CUDA_C_
          <article-title>Programming_Guide</article-title>
          .pdf.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.R.</given-names>
            <surname>Helman</surname>
          </string-name>
          and
          <string-name>
            <surname>J. JaJa</surname>
          </string-name>
          , “
          <article-title>Designing Practical Efficient Algorithms for Symmetric Multiprocessors</article-title>
          ,” Lecture Notes in Computer Science, International Workshop, vol.
          <volume>1619</volume>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Kolpakov</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          , “
          <article-title>Advanced mixing audio streams for heterogeneous computer systems in telecommunications</article-title>
          ,
          <source>” CEUR Workshop Proceedings</source>
          , vol.
          <year>1902</year>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>36</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Kolpakov</surname>
          </string-name>
          , “
          <article-title>Theoretical estimate of the growth performance of a computer system using multiple computing devices,” The world of scientific discoveries</article-title>
          ,
          <source>no. 1</source>
          , pp.
          <fpage>206</fpage>
          -
          <lpage>209</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Belov</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Yu</surname>
          </string-name>
          . Proscuryakov, “
          <article-title>Issues of processing experimental time series in an electronic system of automated control</article-title>
          ,
          <source>” Electronics Issues</source>
          , vol.
          <volume>1</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>95</fpage>
          -
          <lpage>101</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          , “
          <article-title>The algorithm for determining the parameters of the exponential approximation of the law of the probability distribution of the amplitudes of a speech signal,” Radio engineering</article-title>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>44</fpage>
          -
          <lpage>47</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Bykov</surname>
          </string-name>
          , “
          <article-title>The model of the law of the probability distribution of signal amplitudes in the basis of the exponential functions of the system,” Design and technology of electronic tools</article-title>
          ,
          <source>no. 2</source>
          , pp.
          <fpage>30</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Y.A.</given-names>
            <surname>Kropotov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Yu. Proscuryakov</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.A.</given-names>
            <surname>Belov</surname>
          </string-name>
          , “
          <article-title>A method for predicting changes in time series parameters in digital information management systems</article-title>
          ,” Computer Optics, vol.
          <volume>42</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>1093</fpage>
          -
          <lpage>1100</lpage>
          ,
          <year>2018</year>
          . DOI:
          <volume>10</volume>
          .18287/
          <fpage>2412</fpage>
          -6179-2018-42-6-
          <fpage>1093</fpage>
          -1100.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>