<!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>Dynamic Database Operator Scheduling for Processing-in-Memory</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Tiago Rodrigo Kepe</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>1992</year>
      </pub-date>
      <abstract>
        <p>The emerging architectures for Processing-in-Memory (PIM) present new challenges to database systems: one of them is how to schedule intra-query execution with the x86 processor to be executed inside the memory. In this paper, we show that ine cient scheduling for PIM degrades performance and increases energy consumption, but the proper PIM operators can reach signi cant improvement in more than one order of magnitude. Therefore, we bring out our vision of a PIM-aware scheduler for intra-query processing.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>The new Processing-in-Memory or Processor-in-Memory
(PIM) architectures have emerged as a solution to tackle
the problem of data movement between memory and
processor, although research in database systems is still
premature to carry them out. An open issue is how to coordinate
intra-query execution between x86 and underlying memory
processor to exploit the potential gain from each device.</p>
      <p>
        The choice of the target architecture for processing
impacts directly on query execution because mis-scheduling of
database operators can degrade query performance and
increase energy consumption. For example, operators with
high data reuse bene t from caching mechanism, and thus
the x86 processing becomes appealing. On the other hand,
operators with data streaming behavior are more suitable
for PIM [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. However, recent work focus on boosting
database operators in PIM architectures with a single operator
perspective, such as select [
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
        ] or join [
        <xref ref-type="bibr" rid="ref10 ref9">10, 9</xref>
        ]. Such
one-sided approach ignores the bene ts of cache data reuse.
      </p>
      <p>
        Furthermore, current query processing scheduling on
emerging hardware have focused on multi-core architectures to
reduce resource requirements [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], balancing resource
utilization across sockets [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and the proper allocation of cores [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
Other solutions adapt queries in many-core architectures
using ne-grained scheduling of database operators to improve
resources usage on the Intel Xeon Phi processor [
        <xref ref-type="bibr" rid="ref2 ref3">3, 2</xref>
        ]. Those
Proceedings of the VLDB 2018 PhD Workshop, August 27, 2018. Rio de
Janeiro, Brazil.
      </p>
      <p>
        Copyright (C) 2018 for this paper by its authors. Copying permitted for
private and academic purposes.
scheduling solutions deal with idiosyncrasies of the
multicore and many-core architectures to run compute-intensive
applications. But, PIM architectures, such as Hybrid
Memory Cube (HMC) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], have other peculiarities to accomplish
e cient data-intensive applications.
      </p>
      <p>In this thesis, we focus on investigating how to interleave
intra-query execution between the x86 and
processing-inmemory. As far as we know, this is the rst e ort in that
direction. Existing solutions usually direct data-intensive
operators for PIM, however, they neglect the potential of
x86 processing using caches for workloads with high
temporal and spatial data locality. Thus, our vision is that a
database system requires a PIM-aware scheduler for
intraquery processing. During a Query Execution Plan (QEP)
the database scheduler shall be capable of dispatching
operators to suitable devices: PIM and x86. In addition, the
database system needs e cient implementations of
operators for PIM to bene t from the high bandwidth and the
parallelism of the underlying hardware.
2. IMPACT OF DATABASE OPERATORS</p>
      <p>
        Initially, we investigate the set of database operators on
analytic workloads, like TPC-H, because they generate
massive data movement throughout the memory hierarchy [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
We run the 100 GB TPC-H in the column-oriented database
system MonetDB [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], because of its mature research in
database kernels for contemporary memory hierarchy. For each
TPC-H query, we added the TRACE statement modi er of
MonetDB that records broad information of every database
operator, including the execution time. We group the most
time-consuming operators into four categories: project,
select, join, and the remaining ones grouped into the
category \others". We perform the experiments on a Intel
quad-core i7-5500U@2.40GHz with RAM of 16 GB (DDR3L
1333/1600) and L3 cache size of 4MB running OpenSuse
Leap 42.3 on Linux kernel version 4.4.76-1-default. Figure 1
shows the execution time split among those operators for
each query and the last bar to the right aggregates the
results of the whole TPC-H. The most time-consuming
operator is the project (around 56%), followed by select (21%)
and join (15%), these operators impact more than 90% in
the execution time of TPC-H because DBMSes push them
down into the QEP to lter massive volume of data for
subsequent operators.
      </p>
      <p>project select join others
1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q 9Q 01Q 11Q 12Q 13Q 14Q 15Q 16Q 17Q 18Q 19Q 20Q 21Q 22Q PHC</p>
      <p>TPC-H Queries llTA
3. DATABASE OPERATORS INSIDE HMC</p>
      <p>
        In this section, we devise e cient implementations of such
operators inside the HMC evaluating the execution time and
energy consumption. We used the SiNUCA cycle-accurate
in-house simulator [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] to evaluate the execution time with
same parameters used by related work [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The energy
estimations consider the DRAM values for HMC [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. We
evaluate those operators using the 1 G TPC-H because, in
that instance, the input data sets t into the cache, i.e., the
best scenario for x86 processing. Based on this analyze is
possible to pro le the candidate operators for PIM or x86.
      </p>
    </sec>
    <sec id="sec-2">
      <title>3.1 Project Operator</title>
      <p>Surprisingly, TPC-H spends around 56% of the execution
time and memory footprint with projections. In a further
analysis, we investigate the TPC-H Query 031 to scrutinize
the reasons for our ndings. Figure 2 presents a partial
execution of the TPC-H Query 03 in a top-down view and shows
the interaction among select-project-join operators. The
operators select and join generate lters from input columns,
such as an array of matching row-ids and bitmaps, and the
project operator uses these lters to project other columns
in the QEP. Therefore, the impressive impact of projections
on TPC-H with MonetDB is because they take the burden
to materialize intermediate and nal results of other
operators. As shown in the diagram of Figure 2, MonetDB
performs projections through two primitives: algebra.projection
and algebra.projectionpath. The rst projects a column
using as input a set of ltered row-ids (or bitmap) generated
by either a select or join. The latter receives as input two
sets of ltered row-ids (or bitmaps) from the select and join
operators, and combining them to project a column.</p>
      <p>
        We avail the projection operator in the HMC [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to
analyze the processing-in-memory performance. The HMC 2.0
is a 3D die-stacked device comprised of four or eight DRAM
dies and one logic die. Internally, the HMC is organized
as 32 independent vaults. With the support of HIPE [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], a
PIM processor with predicated instructions under the HMC,
we run HIPE-Projection in the agged projections of
Figure 2. Figure 3 depicts both projection primitives in C and
assembly-like codes (HIPE-Projection).
      </p>
      <p>Both primitives traverse bitmap vector(s) to lter a
projection column. Inside the HMC, HIPE-Projection performs
one load of 256-bytes of the input bitmap(s) and, in case of
1We chose Query 03 as it gathers the operators that we are
interested in: project, select, join and group-by/aggregation.</p>
      <sec id="sec-2-1">
        <title>HIPE-Projection Assembly Like</title>
        <sec id="sec-2-1-1">
          <title>LOOP: ...</title>
        </sec>
        <sec id="sec-2-1-2">
          <title>HIPE_LD H1</title>
        </sec>
        <sec id="sec-2-1-3">
          <title>HIPE_SET pH1</title>
        </sec>
        <sec id="sec-2-1-4">
          <title>HIPE_LD H2</title>
        </sec>
        <sec id="sec-2-1-5">
          <title>HIPE_ST H2</title>
        </sec>
        <sec id="sec-2-1-6">
          <title>HIPE_ADD H3 ...</title>
        </sec>
        <sec id="sec-2-1-7">
          <title>J LOOP</title>
        </sec>
        <sec id="sec-2-1-8">
          <title>LOOP: ...</title>
        </sec>
        <sec id="sec-2-1-9">
          <title>HIPE_LD H1</title>
        </sec>
        <sec id="sec-2-1-10">
          <title>HIPE_LD H2</title>
        </sec>
        <sec id="sec-2-1-11">
          <title>HIPE_AND H3</title>
        </sec>
        <sec id="sec-2-1-12">
          <title>HIPE_SET pH3</title>
        </sec>
        <sec id="sec-2-1-13">
          <title>HIPE_LD H4</title>
        </sec>
        <sec id="sec-2-1-14">
          <title>HIPE_ST H4</title>
        </sec>
        <sec id="sec-2-1-15">
          <title>HIPE_ADD H5 ...</title>
        </sec>
        <sec id="sec-2-1-16">
          <title>J LOOP</title>
          <p>bitmap_sel[i]
H1, $1
column[i] (pH1)
result[j] (pH1)
j++ (pH1)
algebra.projection
(with predication)
bitmap_join[i]
bitmap_sel[i]
H1, H2
H3, $1
column[i] (pH3)
result[j] (pH3)
j++ (pH3)
algebra.projectionpath
(with predication)</p>
          <p>CUSTOMER
c_custkey c_mktsegment
1 BUILDING
2 AUTOMOBILE
3 AUTOMOBILE
4 MACHINERY
5 HOUSEHOLD
6 AUTOMOBILE
7 AUTOMOBILE
8 BUILDING
9 FURNITURE
10 HOUSEHOLD</p>
          <p>SELECT
c_mktsegment</p>
          <p>=
“BUILDING”</p>
          <p>bat[oid] 70
PROJECTION
c_custkey</p>
          <p>SELECT
o_orderdate</p>
          <p>&lt;
1995-03-15
1
45 bat[oid]
7
PROJECTION</p>
          <p>o_custkey
PROJECTIONPATH(bat[oid], bat[oid], o_orderkey)
310 5741 23541
6
7
98
10
SELECT
l_shipdate</p>
          <p>&gt;
1995-03-15
1
2 bat[oid]
796
PROJECTION
l_orderkey
0.1
0
4
58 bat[int]
9
1</p>
          <p>JOIN
o_orderkey = l_orderkey
2 4
58 589</p>
          <p>1
12 bat[oid] 12 bat[oid]
2
5 bat[int]
8
matched entries, it executes up to 32 parallel loads of
256bytes of the projection column and stores the values into the
result vector. Those HIPE-load and HIPE-store instructions
are on-chip memory operations, i.e., the load gets data from
DRAM dies to HIPE registers within the HMC, while the
store does the inverse. Therefore, the HIPE-Projection
bene ts from the low on-chip memory latency and it uses the
maximum degree of parallelism of the HMC vaults.</p>
          <p>Figure 4 shows that HIPE-Projection reduced the
execution time by more than one order of magnitude with the</p>
          <p>.061 .034 .024
1x 2x 4x 8x 16x 32x</p>
          <p>Unroll Depth
loop unrolling technique of 32x against the best case of the
x86 processor with the unroll depth of 8x2. The energy
consumption of the total DRAM accesses normalized by the
x86 execution with unroll depth of 1x is present on gure 4.
We observe that the HIPE-Projection reduces the energy
consumption around 55% and 20% on average for both
projection primitives, respectively. Those results are due to the
streaming behavior of projections that causes low data reuse
and less amount of o -chip data transfers during the copy
of data (materialization). Hence, the results endorse the
feasibility of the projection operator for PIM.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3.2 Select Operator</title>
      <p>Considering that select scan is the second most
timeconsuming operator (see Figure 1) responsible for almost
21% of the TPC-H execution time. Traditionally it moves
data around the memory hierarchy up to the processor to
validate lter conditions on database columns. Similar to
the projection operator, we avail the select inside HMC with
the implementation of the HIPE-Selection, as depicted in
Figure 5. HIPE-Selection traverses a database column
testing each value against a constant, which causes compulsory
loads of 32x 256-bytes of the select column and, in case
of matched entries, it executes parallel stores in the result
bitmap vector. These memory accesses are on-chip
operations. Therefore, HIPE-Selection reaches the maximum
degree of parallelism of the HMC and also exploits the low
on-chip memory latency.
2The 8x is the deepest unroll generally implemented by
compilers due to the reduced number of general purpose
registers.</p>
      <sec id="sec-3-1">
        <title>HIPE-Selection Assembly Like</title>
        <p>column[i]
H1, H2
H3, $1
result[j] (pH3)
j++ (pH3)
algebra.select
(with predication)</p>
        <sec id="sec-3-1-1">
          <title>LOOP: ...</title>
        </sec>
        <sec id="sec-3-1-2">
          <title>HIPE_LD H1</title>
        </sec>
        <sec id="sec-3-1-3">
          <title>HIPE_CMP H3</title>
        </sec>
        <sec id="sec-3-1-4">
          <title>HIPE_SET pH3</title>
        </sec>
        <sec id="sec-3-1-5">
          <title>HIPE_ST H1</title>
        </sec>
        <sec id="sec-3-1-6">
          <title>HIPE_ADD H4 ... J LOOP</title>
          <p>100%
90%
80%
ion x8 70%
tp 68 60%
mx
su to 50%
onC ized 40%
y l
rnegE ronam2300%%
10%
0%
algebra.select (column[], filter)
for (int i, j = 0; i &lt; tableSize; i++)
if (column[i] &lt; filter) {
result[j] = column[i];
j++;
}
16 9</p>
          <p>1
14 .13
12
)s10
m
i(e 8
m
T
itconeu 64
x
E 2
0</p>
          <p>We run HIPE-Selection in the agged selection of Figure 2
for performance and energy consumption analysis. Figure 6a
shows that HIPE-Selection unrolled 32x reduces the
execution time by 76x compared to the best x86 scenario with the
unroll depth of 8x. Figure 6b brings the total DRAM energy
consumption normalized by the x86 execution with unroll
depth of 8x. HIPE-Selection reduces the energy
consumption by around 98% of any unroll version. In HIPE-Selection
most data transfers take place on-chip, but the selection in
the x86 causes o -chip data transfers for the entire column
and the result vector (i.e., data movement throughout the
cache memory hierarchy). These results corroborate for the
feasibility of the select operator for PIM.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>3.3 Join Operator</title>
      <p>
        The join operator has been studied for years, with
different algorithms to exploit the potential of the x86
processor. Most of the algorithms belong to the classes of hash
join and sort-merge join. However, such algorithms generate
random memory accesses that inhibit the potential of HMC
(high bandwidth and parallelism over contiguous data), and
indeed the HMC is better exploited for streaming
applications [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Thus, we implemented the Nested Loop Join
(NLJ) due to its streaming behavior that bene ts from the
HMC parallelism. The NLJ traverses the join columns in
two loops: the outer and the inner. In HIPE-Join3, the
inner loop is unrolled up to 32x to exploit the data access
parallelism of the HMC. But, di erent from other PIM
operators, the HIPE-Join reaches poor performance for the
execution time in the agged join of Figure 2, as shown in
Figure 7a. Even the energy consumption is worst in the best
HIPE-Join: 3% with the unroll depth of 32x shown in
Figure 7b, compared to any version of the x86. Although the
3We suppressed the HIPE-Join codes due to space
restriction.
      </p>
      <p>NLJ streams the join columns, it enforces data reuse when
repeatedly traversing the inner loop. Furthermore, the join
columns t into the cache hierarchy and thus only the rst
compulsory misses occur when loading the columns in the
cache. Thereafter, there is no LLC cache misses until the end
of the execution while the inner column is reused N times.
By contrast, in the HIPE-Join every inner loop iteration
cause compulsory LOAD and STORE (in case of matched
join values) instructions. The loop unrolling technique
reduces such impact due to the high internal bandwidth of the
HMC, as depicted in Figure 7. However, it is not enough to
improve performance nor energy consumption when using
PIM.</p>
      <p>140
120
100
)
(sm80
e
iTm60
n
itceuo40 .693
xE20 1
0
4. PIM-AWARE SCHEDULER</p>
      <p>Database system environments with PIM demand careful
decision by the QEP to interleave intra-query execution with
the x86 processor, but the choice of the best target
architecture depends on intra-operator data reuse, which uctuates
according to the operator behavior, the cache settings, and
data characteristics. This motivates the design of a
PIMaware scheduler: our future work on dynamic database
operator scheduling for emerging PIM architectures.</p>
      <p>The scheduler is a critical performance component of a
DBMS: it orchestrates the execution of physical primitives
of a QEP. Thus, we envision two scheduling strategies for a
PIM-aware scheduler: static scheduling and dynamic
scheduling. These strategies receive as input the optimal plan
generated by the query optimizer, coordinating intra-query
execution between PIM and the x86.</p>
      <p>Static scheduling: before query execution, using a
classi cation model based on operator pro le to decide in which
architecture to process each operator.</p>
      <p>Dynamic scheduling: during query execution,
beginning with the static scheduling and modifying on-the- y the
operator implementation as the scheduler detects abnormal
data reuse.</p>
      <p>CONCLUSIONS AND FUTURE WORK
Although PIM architectures feature as high performance
memory by delivering unprecedented bandwidth, data
access parallelism and computational power, not every
application bene ts from PIM capabilities. Thus, database
systems must accurately interleave intra-query processing
between PIM and x86. In this direction, we introduce our
vision of a PIM-aware scheduler for intra-query processing.</p>
      <p>We rst investigate the most impacting database operators
in analytic workloads and develop adjusted PIM operators:
HIPE-[Projection, Selection and Join]. The rst two proved
e cient for the execution time and energy consumption.
However, the latter presented another perspective that is the
intra-operator data reuse is a heavy factor for scheduling
decisions. Our ongoing work is the static scheduling strategy
based on operator pro les. Our future work is the dynamic
scheduling strategy to reschedule operators on-the- y.</p>
    </sec>
    <sec id="sec-5">
      <title>ACKNOWLEDGMENTS</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M. A. Z.</given-names>
            <surname>Alves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Villavieja</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Diener</surname>
          </string-name>
          , and t al.
          <article-title>Sinuca: A validated micro-architecture simulator</article-title>
          .
          <source>HPCC</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>X.</given-names>
            <surname>Cheng</surname>
          </string-name>
          , B.
          <string-name>
            <surname>He</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Lu</surname>
            , and
            <given-names>C. T.</given-names>
          </string-name>
          <string-name>
            <surname>Lau</surname>
          </string-name>
          .
          <article-title>Many-core needs ne-grained scheduling: A case study of query processing on intel xeon phi processors</article-title>
          .
          <source>Journal of Parallel and Distributed Computing</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>X.</given-names>
            <surname>Cheng</surname>
          </string-name>
          , B.
          <string-name>
            <surname>He</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>C. T.</given-names>
          </string-name>
          <string-name>
            <surname>Lau</surname>
            ,
            <given-names>H. P.</given-names>
          </string-name>
          <string-name>
            <surname>Huynh</surname>
            , and
            <given-names>R. S. M.</given-names>
          </string-name>
          <string-name>
            <surname>Goh</surname>
          </string-name>
          .
          <article-title>E cient query processing on many-core architectures: A case study with intel xeon phi processor</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <year>2081</year>
          {
          <year>2084</year>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Dominico</surname>
          </string-name>
          , E. C. de Almeida,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Meira</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. A. Z.</given-names>
            <surname>Alves</surname>
          </string-name>
          .
          <article-title>An elastic multi-core allocation mechanism for database systems</article-title>
          .
          <source>In ICDE</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Giceva</surname>
          </string-name>
          , G. Alonso,
          <string-name>
            <given-names>T.</given-names>
            <surname>Roscoe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Harris</surname>
          </string-name>
          .
          <article-title>Deployment of query plans on multicores</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>8</volume>
          (
          <issue>3</issue>
          ):
          <volume>233</volume>
          {
          <fpage>244</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>HMC</given-names>
            <surname>Consortium</surname>
          </string-name>
          .
          <source>Hybrid Memory Cube Speci cation 2</source>
          .1,
          <string-name>
            <surname>June</surname>
          </string-name>
          <year>2015</year>
          .
          <article-title>HMC-30G-VSR PHY</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Idreos</surname>
          </string-name>
          et al.
          <article-title>Monetdb: Two decades of research in column-oriented database architectures</article-title>
          .
          <source>IEEE Data Eng. Bull.</source>
          , pages
          <volume>40</volume>
          {
          <fpage>45</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Jeddeloh</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Keeth</surname>
          </string-name>
          .
          <article-title>Hybrid memory cube new dram architecture increases density and performance</article-title>
          .
          <source>In VLSI</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y. O.</given-names>
            <surname>Kocberber</surname>
          </string-name>
          et al.
          <article-title>Meet the walkers: accelerating index traversals for in-memory databases</article-title>
          .
          <source>In MICRO-46</source>
          , pages
          <fpage>468</fpage>
          {
          <fpage>479</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>N. S.</given-names>
            <surname>Mirzadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Kocberber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Falsa</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Grot</surname>
          </string-name>
          .
          <article-title>Sort vs. hash join revisited for near-memory execution</article-title>
          .
          <source>In ASBD@ISCA</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I.</given-names>
            <surname>Psaroudakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Scheuer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>May</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sellami</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ailamaki</surname>
          </string-name>
          .
          <article-title>Adaptive numa-aware data placement and task scheduling for analytical workloads in main-memory column-stores</article-title>
          .
          <source>PVLDB</source>
          , pages
          <volume>37</volume>
          {
          <fpage>48</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Santos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. F.</given-names>
            <surname>Oliveira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. G.</given-names>
            <surname>Tome</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A. Z.</given-names>
            <surname>Alves</surname>
          </string-name>
          , E. C. de Almeida, and
          <string-name>
            <given-names>L.</given-names>
            <surname>Carro</surname>
          </string-name>
          .
          <article-title>Operand size recon guration for big data processing in memory</article-title>
          .
          <source>In DATE</source>
          , pages
          <volume>710</volume>
          {
          <fpage>715</fpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D. G.</given-names>
            <surname>Tome</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Santo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Carro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. C.</given-names>
            <surname>Almeida</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. A. Z.</given-names>
            <surname>Alves</surname>
          </string-name>
          . Hipe:
          <article-title>Hmc instruction predication extension applied on database processing</article-title>
          .
          <source>In DATE</source>
          , pages
          <volume>261</volume>
          {
          <fpage>264</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S. L.</given-names>
            <surname>Xi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Babarinsa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Athanassoulis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Idreos</surname>
          </string-name>
          .
          <article-title>Beyond the wall: Near-data processing for databases</article-title>
          .
          <source>In DaMoN</source>
          , pages
          <fpage>2</fpage>
          <issue>:1</issue>
          {2:
          <fpage>10</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>