<!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>EFFICIENT SPECULATIVE PARALLELIZATION ARCHITECTURE FOR OVERCOMING SPECULATION OVERHEADS</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>SudhakarKumar</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sunil K.Singh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>NaveenAggarwal</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>KritiAggarwal</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Chandigarh College of Engineering and Technology</institution>
          ,
          <addr-line>Chandigarh</addr-line>
          ,
          <country country="IN">India</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University Institute of Engineering and Technology</institution>
          ,
          <addr-line>Chandigarh</addr-line>
          ,
          <country country="IN">India</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Today, with the advancement in technology, development of efficient smart and autonomous systems have become a priority. These systems use complex calculations which are hardware demanding and time consuming. Parallel processing systems hence, provide a way of improving the computational performance as a whole. Parallelizing sequential code automatically entails converting it to multithreaded code without supervision. Parallelization in the ideal case would allow programmers to make full use of available hardware resources, resulting in optimal performance. This isn't possible due to a wide array of program dependencies. The technique of speculative parallelization is one of the most favorable ways to automatically parallelize a loop when the system cannot determine dependencies at compile time. Therefore, the need for manual parallelization is eliminated. However, due to the use of additional hardware or software architectures, there are some speculative overheads. The present paper describes a suitable speculative parallelization algorithm that is capable of providing optimal performance. Moreover, suitable hardware architecture is also suggested which can further reduce the overheads for speculative parallelism.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Automatic Parallelization</kwd>
        <kwd>Speculative Parallelization</kwd>
        <kwd>Speculation Overheads</kwd>
        <kwd>Transaction Memory</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Automatic parallelization, often known as auto parallelization, is the process of transforming
sequential code into multi-threaded code in order to employ many processors concurrently in a
multicore shared-memory chip architecture [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Some of the most popular use of automatic parallelization
architectures include artificial intelligence, machine learning, seismic surveying, computational
astrophysics, video color correction, climate modeling, financial risk management, drug discovery,
medical imaging and computational fluid dynamics [
        <xref ref-type="bibr" rid="ref2 ref3 ref4 ref5 ref6">2-6</xref>
        ]. With the advent of smart technologies
especially in the field of architectures [ 26-28] and data science, including artificial intelligence and
deep learning, automatic parallelization techniques are being extensively used to improve the
computation speed of large datasets [
        <xref ref-type="bibr" rid="ref7 ref8 ref9">7-9</xref>
        ]. However, despite its popularity, parallelizing sequential
programs fully automatically is challenging because it requires complex analysis, and the ideal solution
could depend on unknown parameter values when compiling [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Speculative parallelization [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is a strategy which automatically parallelizing loops when the
system cannot detect dependencies at build time. This strategy, also known as thread-level speculation,
assumes that the system can execute all iterations of a particular loop in parallel. Speculative
parallelization has the advantage that it can automatically parallelize loops in a sequential program even
if dependency patterns are unknown at build time.
      </p>
      <p>In this way, it can speed up a parallel, multithreaded computer without requiring manual
parallelization, which incurs development costs. This takes only a few basic changes to the original
sequential code, which are all well within the capability of contemporary compilers. Implementing
custom functions for scheduling threads, executing speculative loads, and initiating commits when a
thread completes successfully.</p>
      <p>
        However, there are some overheads as a result of the utilization of additional hardware. Overheads
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] are all distinct extra activities that must be performed with the goal of resolving difficulties caused
by mis-speculation in speculative parallelism. Thread start and commit overhead is one sort of
mandatory overhead. Other forms of overhead include roll-back overhead, squash overhead, load
imbalance overhead, hardware overhead, communication overhead, and cache replacement overhead,
which are non-compulsory[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>Despite the overheads caused by mis-speculation, automated speculative parallelism with multicore
chip design requires less time to execute a speculative loop than a sequential loop on a single processor.
As a result, the current research investigates several automated parallelization strategies for optimum
sequential code translation. As a result, the authors devise a suitable algorithm capable of producing
near-optimal outputs for dependency-driven applications. The authors also proposed transactional
memory-based technology for the same purpose. The primary goal of creating such hardware is to
minimize overhead as much as feasible.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Literature Survey</title>
      <p>This section surveys various automatic parallelization algorithms and compares their advantages and
disadvantages. The paper also surveys various software and hardware overheads that are encountered
while realizing the speculative parallelism algorithms.
2.1.</p>
    </sec>
    <sec id="sec-3">
      <title>Automatic Parallelization Algorithms</title>
      <p>
        There have been several ways developed for parallelizing sequentially coded algorithms [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Most
the algorithms utilize the relationship between loop iterations. This is because loops take most of the
program execution time. The parallelizing compilers only execute these iterations in separate threads
if they have removable data dependency. When any of the iterations is reliant on other iterations (despite
independent iterations), no compiler can parallelize the loop.
      </p>
      <p>
        The publications in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] provide an overview of some of the most significant contributions in the
field of automatic parallelization. Popular techniques like DOALL (Figure 1) and DOACROSS (Figure
1) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] techniques have been employed to better use multicore architectures through thread level
parallelism (TLP). A loop iteration in DOALL can be executed in parallel because it is independent
from any other loop iteration. On the other hand, DOACROSS is capable of extracting parallelism
from more complicated loops with loop-borne dependencies. Because the loop carried dependency must
be communicated between cores every time the algorithm is iterated, DOACROSS performance is a
function of inter-core latency of the system. Figure 1 shows doall and doacross execution in comparison
to the sequential execution.
      </p>
      <p>
        However, applying these algorithms is a difficult and error prone task due to inter-thread data and
control dependencies. Also, compilers sometimes act very conservative whenever they can’t assure the
absence of any type of dependence. Moreover, as per the Amdahl’s law [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], only few fractions of
whole sequential workload are parallel and hence only those parallel parts can be allocated to different
cores not whole program.
      </p>
      <p>
        Speculative parallelism or thread level speculation is an optimistic multi-threading technique that
automatically parallelizes the implicit (speculative or dependent) threads keeping in view of original
sequential semantic of the program. Parallelization using thread-level speculation (TLS) has been
studied using software [ 20, 21] and hardware [
        <xref ref-type="bibr" rid="ref18 ref19">18, 19</xref>
        ] architecture. Rauchwerger et al [22] originally
proposed it as a way to parallelize loops with independent data access, primarily arrays. There is a
common feature among TLS implementations in that they largely rely on loops to parallelize, they
mostly change the cache coherence protocols, and the parallel sections are generally small.
2.2.
      </p>
    </sec>
    <sec id="sec-4">
      <title>Overhead encounter in Speculative Parallelization</title>
      <p>The identification of speculative threads can greatly contribute to overall performance. Architectures
like Hydra, Atlas, Trace, Mitosis etc use dedicated compilers for the parallelization of sequential code
[23, 24]. For the control flow and/or speculative values, however, they use software-based value
prediction. This as compared to the proposed method is not applicable for all software code and
applications.</p>
      <p>Several thread-level speculative approaches have been proposed for extracting parallelism from
legacy code by using Transactional Memory. They split an application into sections and run them
speculatively on parallel threads. Each thread can either buffer its state or expose it. If the code is unsafe,
the changes are reverted, and the execution is restarted. Some efforts have combined TLS and TM into
a unified model to benefit from both technologies. However, most of the models require manual efforts
to ensure memory violations do not occur.</p>
      <p>The proposed architecture and algorithm uses speculation for improving the performance of
automatic parallelization algorithm. However, as discussed in section 2.1. and section 2.2. Speculation
requires additional hardware or software support which results in overheads. The present paper hence
proposes an efficient, computation aware architecture that minimizes some of the non-compulsory
speculation overheads.</p>
    </sec>
    <sec id="sec-5">
      <title>3. Architecture Framework &amp; Design</title>
      <p>The present paper proposes an architecture for conversion of sequential code into paralleled threads
or jobs speculatively. For the same program is first converted into LLVM IR through the preprocessing
step. Then via the code profiling step hot loops are identified. These loops then pass through the code
transformer and generator phase of the architecture. The next step is the multi-threaded code generation
step as described in the section 3.1. The partitioned code is scheduled onto the transaction
memorybased runtime architecture. The scheduling of jobs is said to be successful when there are no
dependency violations. The detailed architecture scan be seen in the Figure 2.</p>
      <p>1. Preprocessing: It involves preparing the program's intermediate representation (IR) for
parallelization.</p>
      <p>2. Profiling: The code profiling employed in this design is based on hotspots in the original IR
code.</p>
      <p>3. Memory analysis &amp; Code Generation: The result of the memory analysis phase is fended into
the code transformation and generation mechanism. The code generation algorithm used in the
architecture is defined in Figure 3.</p>
      <p>4. Runtime &amp; Hardware Architecture: The model uses a batch wise process batch approach.
The multi-threaded code generation algorithm produces parallel code in the form worker threads (or
jobs) which are executed in batches. These are then implemented as memory transactions in the model.
Each memory transaction has its own private copy of the memory that has been accessed. The purpose
of transactional memory systems is to support portions of code identified as transactions in a visible
manner by guaranteeing atomicity, consistency, and isolation. By allowing programmers to wrap their
procedures behind transactional blocks, transactional memory provides a high-level programming
abstraction.</p>
      <p>5. Validation &amp; Recovery: To support transactional memory access, the model additionally
includes batch-wise validation tests In the event that a dependence violation conflict is found, tasks
within the batch are performed up to the last valid checkpoint before waiting for the Recovery program
to terminate transactions in the higher chronological order</p>
    </sec>
    <sec id="sec-6">
      <title>4. Evaluation</title>
      <p>Implementations of the current architecture use the LLVM compiler infrastructure, which has been
tested using clang in full system mode on a quad-core out-of-order processor. The operating system
used in for testing and implementing the model is Linux OS (Ubuntu Version 21) [25]. The algorithm
phase is implemented in the LLVM compiler infrastructure. LLVM provide analysis modules and
passes which can be manipulated in order to perform code optimizations and transformations.</p>
      <p>Speedup of the hottest loop of each benchmark speedup is compared to the sequential execution time
in Figure 4.</p>
      <p>052.alvinn is a back propagation based neural networking algorithm in C from the SPECfp92
benchmark suite. K-means or 120.kmean is a clustering algorithm in C++ form the SPEC ACCEL
benchmark suite. Labyrinth algorithm from STAMP benchmark is used in grid copying operations for
the removal of read sets. Swaptions is PARSEC based algorithm used in heath-jarrow-Morton
framework. Bzip algorithm is an opensource burrows-Wheeler Feature comparison algorithm.</p>
    </sec>
    <sec id="sec-7">
      <title>5. Conclusion</title>
      <p>The current research paper discussed automatic parallelization approaches for the conversion of
parallel codes into threads. Although several parallelization algorithms have been devised over the year,
speculative parallelization techniques provide better speedup. This is because they speculatively predict
values at compile time. This helps in code optimization and hence, code generation. However,
speculative algorithms require additional overheads. Hence, in the present paper a suitable speculative
algorithm has been devised which produces high speed up as compared to sequential algorithms.
Further, transactional memory-based hardware architecture for the same has also been discussed. The
hardware suggested, is capable of producing near-optimal outputs for dependency-driven applications.
The future research avenues entails improving the parts of speculative parallelization architecture, in
order to ensure better dependency identification and removal. The use of LLVM in development
infrastructure as a whole will not only help in increasing the performance of proposed algorithms but
also facilitate the application of algorithm to various other speculation techniques as well.</p>
    </sec>
    <sec id="sec-8">
      <title>6. References</title>
      <p>[ 20 ] Francis Dang, Hao Yu, and Lawrence Rauchwerger. 2001. The R-LRPD test: Speculative
parallelization of partially parallel loops. In Parallel and Distributed Processing Symposium.,
Proceedings International, IPDPS 2002.
[ 21 ] Wei Liu, James Tuck, Luis Ceze, Wonsun Ahn, Karin Strauss, Jose Renau, and Josep Torrellas.
2006. POSH: a TLS compiler that exploits program structure. In Proceedings of the eleventh
ACM SIGPLAN symposium on Principles and practice of parallel programming. ACM, 158–
167.
[ 22 ] Lawrence Rauchwerger and David A Padua. 1999. The LRPD test: Speculative run-time
parallelization of loops with privatization and reduction parallelization. Parallel and Distributed
Systems, IEEE Transactions on 10, 2 (1999), 160–180.
[ 23 ] M.B. Radulovic, M.V. Tomaševic, On reducing overheads in CMP TLS integrated protocols,</p>
      <p>IPSI Trans. Internet Res. 3 (1) (2007) 11–17.
[ 24 ] M.B. Radulovic, M.V. Tomaševic, Towards an improved integrated coherence and speculation
protocol, in: IEEE EUROCON 2007 Conference, Sept9-12, Warsaw, Poland, 2007, pp. 405–
412.
[ 25 ] Singh, S.K. (2021). Linux Yourself: Concept and Programming (1st ed.). Chapman and</p>
      <p>Hall/CRC. https://doi.org/10.1201/9780429446047
[ 26 ] Singh, S. K., Singh, R. K., &amp; Bhatia, M. P. S. (2011). CAD Optimization Technique in
Reconfigurable Computing System using Hybrid Architecture. International Journal of Computer
Applications, 24(4), 50-54.
[ 27 ] Singh, S. K., Singh, R. K., Bhatia, M. P. S., &amp; Madan, R. (2011). Multi FPGA Based Novel
Reconfigurable Hybrid Architecture for High Performance Computing. International Journal of
Computer Science Issues (IJCSI), 8(4), 335.
[ 28 ] S. K. Singh, A. Madaan, A. Aggarwal and A. Dewan, "Design and implementation of a
highperformance computing system using distributed compilation," 2013 International Conference
on Advances in Computing, Communications and Informatics (ICACCI), 2013, pp. 1352-1357,
doi: 10.1109/ICACCI.2013.6637374.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [ 1 ]
          <string-name>
            <surname>Yehezkael</surname>
          </string-name>
          ,
          <string-name>
            <surname>Rafael</surname>
          </string-name>
          (
          <year>2000</year>
          ).
          <article-title>"Experiments in Separating Computational Algorithm from Program Distribution and Communication"</article-title>
          .
          <source>Lecture Notes in Computer Science of Springer Verlag. Lecture Notes in Computer Science</source>
          .
          <year>1947</year>
          :
          <fpage>268</fpage>
          -
          <lpage>278</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [ 2 ]
          <string-name>
            <surname>Aggarwal</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Singh</surname>
            ,
            <given-names>S. K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chopra</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Kumar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2022</year>
          ).
          <article-title>Role of Social Media in the COVID-19 Pandemic: A Literature Review</article-title>
          . In B.
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Peraković</surname>
            ,
            <given-names>A. Abd</given-names>
          </string-name>
          <string-name>
            <surname>El-Latif</surname>
          </string-name>
          , &amp; D.
          <string-name>
            <surname>Gupta</surname>
          </string-name>
          (Ed.),
          <article-title>Data Mining Approaches for Big Data and Sentiment Analysis in Social Media</article-title>
          (pp.
          <fpage>91</fpage>
          -
          <lpage>115</lpage>
          ). IGI Global. http://doi:10.4018/978-1-
          <fpage>7998</fpage>
          -8413-2.
          <year>ch004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [ 3 ]
          <string-name>
            <surname>Chopra</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Singh</surname>
            ,
            <given-names>S. K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aggarwal</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2022</year>
          ).
          <article-title>Predicting Catastrophic Events Using Machine Learning Models for Natural Language Processing</article-title>
          . In B.
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Peraković</surname>
            ,
            <given-names>A. Abd</given-names>
          </string-name>
          <string-name>
            <surname>El-Latif</surname>
          </string-name>
          , &amp; D.
          <string-name>
            <surname>Gupta</surname>
          </string-name>
          (Ed.),
          <article-title>Data Mining Approaches for Big Data and Sentiment Analysis in Social Media</article-title>
          (pp.
          <fpage>223</fpage>
          -
          <lpage>243</lpage>
          ). IGI Global. https://www.igiglobal.com/gateway/chapter/293158.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [ 4 ]
          <string-name>
            <surname>Do</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Phan</surname>
            ,
            <given-names>T. H.</given-names>
          </string-name>
          , et al. (
          <year>2021</year>
          ).
          <article-title>Developing a Vietnamese tourism question answering system using knowledge graph and deep learning</article-title>
          .
          <source>Transactions on Asian and Low-Resource Language Information Processing</source>
          ,
          <volume>20</volume>
          (
          <issue>5</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [ 5 ]
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>B. B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agrawal</surname>
            ,
            <given-names>D. P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yamaguchi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Sheng</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2020</year>
          ).
          <article-title>Soft computing techniques for big data and cloud computing</article-title>
          .
          <source>Soft Computing</source>
          ,
          <volume>24</volume>
          (
          <issue>8</issue>
          ),
          <fpage>5483</fpage>
          -
          <lpage>5484</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [ 6 ]
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>B. B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tewari</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cvitić</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peraković</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Chang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          (
          <year>2021</year>
          ).
          <article-title>Artificial intelligence empowered emails classifier for Internet of Things based systems in industry 4.0</article-title>
          .
          <string-name>
            <given-names>Wireless</given-names>
            <surname>Networks</surname>
          </string-name>
          ,
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [ 7 ]
          <string-name>
            <surname>AlZu'bi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hawashin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mujahed</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jararweh</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          , et al. (
          <year>2019</year>
          ).
          <article-title>An efficient employment of internet of multimedia things in smart and future agriculture</article-title>
          .
          <source>Multimedia Tools and Applications</source>
          ,
          <volume>78</volume>
          (
          <issue>20</issue>
          ),
          <fpage>29581</fpage>
          -
          <lpage>29605</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [ 8 ]
          <string-name>
            <surname>Adil</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jiang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grigoriev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al (
          <year>2017</year>
          ).
          <article-title>Training an agent for fps doom game using visual reinforcement learning and vizdoom</article-title>
          .
          <source>International Journal of Advanced Computer Science and Applications</source>
          ,
          <volume>8</volume>
          (
          <issue>12</issue>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [ 9 ]
          <string-name>
            <given-names>Manepalli</given-names>
            <surname>Ratna</surname>
          </string-name>
          <string-name>
            <surname>Sri</surname>
          </string-name>
          , Surya Prakash and
          <string-name>
            <given-names>T</given-names>
            <surname>Karuna</surname>
          </string-name>
          (
          <year>2021</year>
          )
          <article-title>Classification of Fungi Microscopic Images - Leveraging the use of AI, Insights2Techinfo</article-title>
          , pp.
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [ 10 ]
          <string-name>
            <surname>Fox</surname>
          </string-name>
          , Geoffrey; Roy Williams; Paul Messina (
          <year>1994</year>
          ). Parallel Computing Works! Morgan Kaufmann. pp.
          <volume>575</volume>
          ,
          <issue>593</issue>
          .
          <source>ISBN 978-1-55860-253-3</source>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [ 11 ]
          <string-name>
            <surname>M. K. Prabhu</surname>
            and
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Olukotun</surname>
          </string-name>
          , “
          <article-title>Using Thread-Level Speculation to Simplify Manual Parallelization</article-title>
          ,”
          <source>in Proceedings of the Ninth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming</source>
          ,
          <year>2003</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [ 12 ]
          <string-name>
            <surname>M. B. Radulović</surname>
            ,
            <given-names>M. V</given-names>
          </string-name>
          <string-name>
            <surname>Tomašević</surname>
            , and
            <given-names>V. M.</given-names>
          </string-name>
          <string-name>
            <surname>Milutinović</surname>
          </string-name>
          , “Chapter One - Register-Level Communication in Speculative Chip Multiprocessors,” vol.
          <volume>92</volume>
          , A. Hurson, Ed. Elsevier,
          <year>2014</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>66</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [ 13 ]
          <string-name>
            <surname>Zima</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <article-title>Supercompilers for Parallel and Vector Computers</article-title>
          , ACM Press, New York,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [ 14 ] Doreen Y Cheng.
          <year>1993</year>
          .
          <article-title>A survey of parallel programming languages and tools</article-title>
          .
          <source>Computer Sciences Corporation, NASA Ames Research Center, Report RND-93-005 March</source>
          (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [ 15 ]
          <string-name>
            <surname>Sudhakar</surname>
            <given-names>Kumar</given-names>
          </string-name>
          , Sunil Kr Singh,
          <string-name>
            <surname>Naveen Aggarwal</surname>
          </string-name>
          , Kriti Aggarwal, “
          <article-title>Evaluation of automatic parallelization algorithms to minimize speculative parallelism overheads: An experiment”</article-title>
          , pp
          <fpage>1517</fpage>
          -
          <lpage>1528</lpage>
          ,
          <source>2021 Journal of Discrete Mathematical Sciences and Cryptography</source>
          , Volume
          <volume>24</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>5</given-names>
          </string-name>
          , Taylor &amp; Francis, (
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [ 16 ]
          <string-name>
            <surname>M. D. Hill</surname>
            and
            <given-names>M. R.</given-names>
          </string-name>
          <string-name>
            <surname>Marty</surname>
          </string-name>
          , “
          <article-title>Amdahl's Law in the Multicore Era,” Computer (Long</article-title>
          . Beach. Calif)., vol.
          <volume>41</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>38</lpage>
          , Jul. 2008
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [ 17 ]
          <string-name>
            <surname>Michael</surname>
            <given-names>K</given-names>
          </string-name>
          <string-name>
            <surname>Chen and Kunle Olukotun</surname>
          </string-name>
          .
          <year>2003</year>
          .
          <article-title>The Jrpm system for dynamically parallelizing Java programs</article-title>
          .
          <source>In Computer Architecture</source>
          ,
          <year>2003</year>
          .
          <source>Proceedings. 30th Annual International Symposium on. IEEE</source>
          ,
          <fpage>434</fpage>
          -
          <lpage>445</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [ 18 ]
          <string-name>
            <surname>Lance</surname>
            <given-names>Hammond</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Mark</given-names>
            <surname>Willey</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Kunle</given-names>
            <surname>Olukotun</surname>
          </string-name>
          .
          <year>1998</year>
          .
          <article-title>Data Speculation Support for a Chip Multiprocessor</article-title>
          .
          <source>SIGOPS Oper. Syst. Rev. 32</source>
          ,
          <issue>5</issue>
          (Oct.
          <year>1998</year>
          ),
          <fpage>58</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [ 19 ]
          <string-name>
            <given-names>J</given-names>
            <surname>Greggory Steffan</surname>
          </string-name>
          , Christopher B Colohan,
          <string-name>
            <surname>Antonia Zhai</surname>
          </string-name>
          , and Todd C Mowry.
          <year>2000</year>
          .
          <article-title>A scalable approach to thread-level speculation</article-title>
          . Vol.
          <volume>28</volume>
          . ACM.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>