%PDF-1.4 %ÐÔÅØ 1 0 obj << /S /GoTo /D (chapter.1) >> endobj 4 0 obj (Introduction) endobj 5 0 obj << /S /GoTo /D (section.1.1) >> endobj 8 0 obj (Motivation) endobj 9 0 obj << /S /GoTo /D (subsection.1.1.1) >> endobj 12 0 obj (Research questions) endobj 13 0 obj << /S /GoTo /D (subsection.1.1.2) >> endobj 16 0 obj (Contributions) endobj 17 0 obj << /S /GoTo /D (section.1.2) >> endobj 20 0 obj (Outline) endobj 21 0 obj << /S /GoTo /D (chapter.2) >> endobj 24 0 obj (Preliminaries) endobj 25 0 obj << /S /GoTo /D (section.2.1) >> endobj 28 0 obj (Relational database systems) endobj 29 0 obj << /S /GoTo /D (section.2.2) >> endobj 32 0 obj (VectorWise vectorized execution) endobj 33 0 obj << /S /GoTo /D (subsection.2.2.1) >> endobj 36 0 obj (Architecture of Ingres VectorWise system) endobj 37 0 obj << /S /GoTo /D (subsection.2.2.2) >> endobj 40 0 obj (Expressions and primitives) endobj 41 0 obj << /S /GoTo /D (subsection.2.2.3) >> endobj 44 0 obj (VectorWise performance) endobj 45 0 obj << /S /GoTo /D (section.2.3) >> endobj 48 0 obj (Modern hardware architecture) endobj 49 0 obj << /S /GoTo /D (subsection.2.3.1) >> endobj 52 0 obj (CPU) endobj 53 0 obj << /S /GoTo /D (subsection.2.3.2) >> endobj 56 0 obj (Pipelined execution) endobj 57 0 obj << /S /GoTo /D (subsection.2.3.3) >> endobj 60 0 obj (Hazards and how to deal with them) endobj 61 0 obj << /S /GoTo /D (subsection.2.3.4) >> endobj 64 0 obj (CPU caches) endobj 65 0 obj << /S /GoTo /D (subsection.2.3.5) >> endobj 68 0 obj (SIMD instructions) endobj 69 0 obj << /S /GoTo /D (subsection.2.3.6) >> endobj 72 0 obj (Virtual memory and TLB cache) endobj 73 0 obj << /S /GoTo /D (section.2.4) >> endobj 76 0 obj (Related work on JIT query compilation) endobj 77 0 obj << /S /GoTo /D (subsection.2.4.1) >> endobj 80 0 obj (Origins) endobj 81 0 obj << /S /GoTo /D (subsection.2.4.2) >> endobj 84 0 obj (HIQUE) endobj 85 0 obj << /S /GoTo /D (subsection.2.4.3) >> endobj 88 0 obj (Hyper) endobj 89 0 obj << /S /GoTo /D (subsection.2.4.4) >> endobj 92 0 obj (JAMDB) endobj 93 0 obj << /S /GoTo /D (subsection.2.4.5) >> endobj 96 0 obj (Other) endobj 97 0 obj << /S /GoTo /D (section.2.5) >> endobj 100 0 obj (Summary) endobj 101 0 obj << /S /GoTo /D (chapter.3) >> endobj 104 0 obj (Vectorization vs. Compilation) endobj 105 0 obj << /S /GoTo /D (section.3.1) >> endobj 108 0 obj (Experiments overview) endobj 109 0 obj << /S /GoTo /D (subsection.3.1.1) >> endobj 112 0 obj (Experimental setup) endobj 113 0 obj << /S /GoTo /D (section.3.2) >> endobj 116 0 obj (Case study: Project) endobj 117 0 obj << /S /GoTo /D (subsection.3.2.1) >> endobj 120 0 obj (Vectorized Execution) endobj 121 0 obj << /S /GoTo /D (subsection.3.2.2) >> endobj 124 0 obj (Loop-compiled Execution) endobj 125 0 obj << /S /GoTo /D (subsection.3.2.3) >> endobj 128 0 obj (SIMDization using SSE) endobj 129 0 obj << /S /GoTo /D (subsection.3.2.4) >> endobj 132 0 obj (Tuple-at-a-time compilation) endobj 133 0 obj << /S /GoTo /D (subsection.3.2.5) >> endobj 136 0 obj (Effect of vector length) endobj 137 0 obj << /S /GoTo /D (subsection.3.2.6) >> endobj 140 0 obj (Project under Select and compute-all optimization) endobj 141 0 obj << /S /GoTo /D (section.3.3) >> endobj 144 0 obj (Case study: Conjunctive select) endobj 145 0 obj << /S /GoTo /D (subsection.3.3.1) >> endobj 148 0 obj (Vectorized execution) endobj 149 0 obj << /S /GoTo /D (subsection.3.3.2) >> endobj 152 0 obj (Loop-compiled execution) endobj 153 0 obj << /S /GoTo /D (section.3.4) >> endobj 156 0 obj (Case study: Disjunctive select) endobj 157 0 obj << /S /GoTo /D (subsection.3.4.1) >> endobj 160 0 obj (Vectorized execution) endobj 161 0 obj << /S /GoTo /D (subsection.3.4.2) >> endobj 164 0 obj (Loop-compiled execution) endobj 165 0 obj << /S /GoTo /D (section.3.5) >> endobj 168 0 obj (Synthesis: Selection and Projection) endobj 169 0 obj << /S /GoTo /D (section.3.6) >> endobj 172 0 obj (Case Study: Hash Join) endobj 173 0 obj << /S /GoTo /D (subsection.3.6.1) >> endobj 176 0 obj (Vectorized implementation) endobj 177 0 obj << /S /GoTo /D (subsection.3.6.2) >> endobj 180 0 obj (Loop-compiled implementation) endobj 181 0 obj << /S /GoTo /D (subsection.3.6.3) >> endobj 184 0 obj (Build phase) endobj 185 0 obj << /S /GoTo /D (subsection.3.6.4) >> endobj 188 0 obj (Probe lookup: bucket chain traversal) endobj 189 0 obj << /S /GoTo /D (subsection.3.6.5) >> endobj 192 0 obj (Probe fetching) endobj 193 0 obj << /S /GoTo /D (subsection.3.6.6) >> endobj 196 0 obj (Reduced vector length) endobj 197 0 obj << /S /GoTo /D (subsection.3.6.7) >> endobj 200 0 obj (Partial Compilation) endobj 201 0 obj << /S /GoTo /D (section.3.7) >> endobj 204 0 obj (Software engineering aspects of Vectorization and Compilation) endobj 205 0 obj << /S /GoTo /D (subsection.3.7.1) >> endobj 208 0 obj (System complexity) endobj 209 0 obj << /S /GoTo /D (subsection.3.7.2) >> endobj 212 0 obj (Compilation overheads) endobj 213 0 obj << /S /GoTo /D (subsection.3.7.3) >> endobj 216 0 obj (Profiling and runtime performance optimization) endobj 217 0 obj << /S /GoTo /D (section.3.8) >> endobj 220 0 obj (Summary) endobj 221 0 obj << /S /GoTo /D (chapter.4) >> endobj 224 0 obj (JIT Compilation infrastructure) endobj 225 0 obj << /S /GoTo /D (section.4.1) >> endobj 228 0 obj (Compilers) endobj 229 0 obj << /S /GoTo /D (subsection.4.1.1) >> endobj 232 0 obj (GNU Compiler Collection \205 gcc) endobj 233 0 obj << /S /GoTo /D (subsection.4.1.2) >> endobj 236 0 obj (Intel Compiler \205 icc) endobj 237 0 obj << /S /GoTo /D (subsection.4.1.3) >> endobj 240 0 obj (LLVM and clang) endobj 241 0 obj << /S /GoTo /D (section.4.2) >> endobj 244 0 obj (VectorWise compilation) endobj 245 0 obj << /S /GoTo /D (subsection.4.2.1) >> endobj 248 0 obj (Build time) endobj 249 0 obj << /S /GoTo /D (subsection.4.2.2) >> endobj 252 0 obj (TPC-H performance) endobj 253 0 obj << /S /GoTo /D (section.4.3) >> endobj 256 0 obj (Implementation) endobj 257 0 obj << /S /GoTo /D (subsection.4.3.1) >> endobj 260 0 obj (External compiler and dynamic linking) endobj 261 0 obj << /S /GoTo /D (subsection.4.3.2) >> endobj 264 0 obj (Using LLVM and clang internally) endobj 265 0 obj << /S /GoTo /D (subsection.4.3.3) >> endobj 268 0 obj (JIT compilation infrastructure API) endobj 269 0 obj << /S /GoTo /D (subsection.4.3.4) >> endobj 272 0 obj (Evaluation) endobj 273 0 obj << /S /GoTo /D (section.4.4) >> endobj 276 0 obj (Summary) endobj 277 0 obj << /S /GoTo /D (chapter.5) >> endobj 280 0 obj (JIT primitive generation and management) endobj 281 0 obj << /S /GoTo /D (section.5.1) >> endobj 284 0 obj (Source templates) endobj 285 0 obj << /S /GoTo /D (subsection.5.1.1) >> endobj 288 0 obj (Primitive templates) endobj 289 0 obj << /S /GoTo /D (subsection.5.1.2) >> endobj 292 0 obj (Source preamble) endobj 293 0 obj << /S /GoTo /D (section.5.2) >> endobj 296 0 obj (JIT opportunities detection and injection) endobj 297 0 obj << /S /GoTo /D (subsection.5.2.1) >> endobj 300 0 obj (Fragments tagging pass) endobj 301 0 obj << /S /GoTo /D (subsection.5.2.2) >> endobj 304 0 obj (Fragments generation and collapsing pass) endobj 305 0 obj << /S /GoTo /D (subsection.5.2.3) >> endobj 308 0 obj (Compilation pass) endobj 309 0 obj << /S /GoTo /D (subsection.5.2.4) >> endobj 312 0 obj (Limitations) endobj 313 0 obj << /S /GoTo /D (section.5.3) >> endobj 316 0 obj (Source code generation) endobj 317 0 obj << /S /GoTo /D (subsection.5.3.1) >> endobj 320 0 obj (snode trees) endobj 321 0 obj << /S /GoTo /D (subsection.5.3.2) >> endobj 324 0 obj (JitContext) endobj 325 0 obj << /S /GoTo /D (subsection.5.3.3) >> endobj 328 0 obj (Code generation) endobj 329 0 obj << /S /GoTo /D (section.5.4) >> endobj 332 0 obj (Primitives storage and maintenance) endobj 333 0 obj << /S /GoTo /D (section.5.5) >> endobj 336 0 obj (Summary) endobj 337 0 obj << /S /GoTo /D (chapter.6) >> endobj 340 0 obj (JIT primitives evaluation) endobj 341 0 obj << /S /GoTo /D (section.6.1) >> endobj 344 0 obj (TPC-H Query 1) endobj 345 0 obj << /S /GoTo /D (section.6.2) >> endobj 348 0 obj (TPC-H Query 6) endobj 349 0 obj << /S /GoTo /D (section.6.3) >> endobj 352 0 obj (TPC-H Query 12) endobj 353 0 obj << /S /GoTo /D (section.6.4) >> endobj 356 0 obj (TPC-H Query 19) endobj 357 0 obj << /S /GoTo /D (section.6.5) >> endobj 360 0 obj (Summary) endobj 361 0 obj << /S /GoTo /D (chapter.7) >> endobj 364 0 obj (Conclusions and future work) endobj 365 0 obj << /S /GoTo /D (section.7.1) >> endobj 368 0 obj (Contributions) endobj 369 0 obj << /S /GoTo /D (section.7.2) >> endobj 372 0 obj (Answers to research questions) endobj 373 0 obj << /S /GoTo /D (section.7.3) >> endobj 376 0 obj (Future work) endobj 377 0 obj << /S /GoTo /D [378 0 R /Fit ] >> endobj 380 0 obj << /Length 698 /Filter /FlateDecode >> stream xÚ¥”ÉnÛ0†ïy  ˆXq'{K\M€´i½è‚B˜†ˆ-Z’ÆOßáâÔ)œ¢ËE¶HñŸ¾™áñüàå – –ˆ`Î’ùUB0ETêDR¨Jæuò)]4ö.£85]o‡Œ’ô!Ë©äi{~/3MÓ²ëK·wŸ}™ŸªØUÍ1.Ùœ`¤qÔ=ɤJËj\ ^´ÀA´ éy9\›u9ت?+“v};¦o³Êš¦2á¥lêxÊTNëºlà\tò$?%—8É)CšËEHã¹4Ö=D­Ëõ¾Ì˜Fã¿È+úÞ1Çe‚xø¨à<É9E‚‘ u6®ìØo‚“€ ¶êolP E‚!6ç^!§œ±FĽÆlkÓdD¦œKM‹²œQž¦¨Ÿ^,.á‰Ã>ÁDT»õå­?š%Iü\(!‘àÊÛ…·vû!·M>ص ž]Õì êØ6aÁ6N ˆ¡‚:p)Á-3ÍRS mg7¦Ÿ¿M1ýnªÑ=²û™9¦ÖUV"*¢ó² §¡zۇغª•c4”lô7yw~±˜O?Dä“ÓéÛÉtkŒ*œŠ.ã±^³*¤Mwgû¶{µÏj9L™Øšìª…)Œˆ[_·¨ôC¾³ñq¼q­ÚºÇýs½Àø YJE¶ˆ ˆ/mïJ^Ñù@`ŒH¤t4vb»>vLgÊÚ<Ÿ EšEŒ~„©·MµÙ箈¾h8öÚܱ)ý¤@̝y“qn·Fwcú †~‚=|7Áðç!¬?™à_#Oâhtã:| `nƦ6áíEÚ\µ¿ŽÊ'¨â23Uëï ?cûýi:9•«ßQ"ÿCIý¥\h$!½\`èò˜æÑømܶ)°¿¦óƒ†›Â endstream endobj 378 0 obj << /Type /Page /Contents 380 0 R /Resources 379 0 R /MediaBox [0 0 595.276 841.89] /Parent 386 0 R >> endobj 381 0 obj << /D [378 0 R /XYZ 84.039 786.197 null] >> endobj 382 0 obj << /D [378 0 R /XYZ 85.039 748.335 null] >> endobj 379 0 obj << /Font << /F17 383 0 R /F16 384 0 R /F20 385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 389 0 obj << /Length 619 /Filter /FlateDecode >> stream xÚ­T;sÛ0Þý+´Uº«‘Ösì+×ö.S´µh ¶Ù³(—¤œË¿/HPŠ&íÒ oÀ÷QïÛÕÍ-«"–§›¼äQ»‹XÆÒ¦*£¢æiÃYÔöÑ·ø~:%ë ‹AŸ¥õƒVUÄÆ ¨C6ùÑ~½¹åYÄ°AQøfY´ÎyÊ›œÚ| Û„Wñ#Ö×MüE“Åݨ¾g,×™ö ,ÅíÈuÒ`ð3Xiç0ÒPÖƒó³dž„†žB“êAS`˜¿‹ºqë éב£¢d¡z·C´feÚl*”›´É+=ÅËXzYÅ»éè¦>rÓ¬¨hø5IíÏâæ áݨ©lÉëa¯!è㎂wÂX?ðâ+ããpšï}'AuúIçA‹2ÍËšýˆàr›ºÈ ¶yÏ šFî•°“‚섬©Ó¦{¿›ìáÿ Îî w¢‡î(†§"›ŽKZp]!"q§/ˆ‡Ll@wŽË¡ÃÖ+jTÁåî뤴¡Ò0áulàþ$C¸ñãN[+¤òŒCk¡7Šç¡ÌüÌ ¡ìb•Æ>#žÍ‡kˆ/¹Øú#ñ§WàôƒŠ‚sâ1'sK@þù"6;pK$Ì„~¤ÌOè,yü}0_ø«<’ó¤GT긃~Òn=Ê¡Ü,ÜBª}è=£=²{ý¢ô^X9ÄïpüÑ­uvÀ~ë¦`žOUF|òû•ÍL¦*dB×5™Ð.DoߥúÊðÇ µtZtz‰>Ù1DvâÒÆguÂZѹîøËߎxf=*<‰‡übž¾ì¼Á‡xñ,±üêA¯>µ«ßò–õ endstream endobj 388 0 obj << /Type /Page /Contents 389 0 R /Resources 387 0 R /MediaBox [0 0 595.276 841.89] /Parent 386 0 R >> endobj 390 0 obj << /D [388 0 R /XYZ 84.039 786.197 null] >> endobj 387 0 obj << /Font << /F17 383 0 R /F20 385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 393 0 obj << /Length 1329 /Filter /FlateDecode >> stream xÚuÉvÛ6ðî¯ÐzÏb¹Šdorì4Në´yRšCÓDBTÒŠòõÁ¹aO fßw››Ÿ^Gù,Š‚2ËâÙf7‹ó2ãd¶\†AY.g›zö—Xm]oeÕÏÿÞ¼†l2,#dXDe”E:[ÄY…)qÜË^n¥SóE‡¢•FîU«Ì<.DO0wv½j=v²bÒƒÞ覉ZÙ£U½ìug •¢›Ç¹xFœ²%k¢>ãÝp<΀îl¯ÍžÐŸÂ(S_õ¶QèÃ,³“ ËÈØZU´ ‚¤ÎI˜‹eÏx-D#Í<û|pqC…¤"•ŽÎõûߺýnJ°%¶“ZÍô}G§ëšgo¡4‹9Úìlé¡YãÈÓ™EP‹k/Ò’Ü@Ñâ"{e8„F䥐¦&pÕµGÝ0ÔQ”T¥e£¿)&å{+1/H³ë,Õó<[ Ù’bêaò ¥x‰€dp¬L†Ú[À–‘ܨ`‹<ç)ûHâLü9/R°«ïìGív÷´FYqJ! ¼ÁdïI¥cj¨>¦5Ùêý^Y‚m¦GK¾0‹ì Ù¬ÄHx]K(+}q©šÒé+ð䈁¬ T‹õöMMy6UÊIO”2C„æÂ[芼ïõ⬪:[;zp¦¡Œ„bhKþÖʲÞW|pDç­ˆ ö˜·2ÆLM¹°~|ºû†Á a¨0N½Æ€Üy˜Š;H:‘u;jGÈê8 ¨ žŠ;“‡îêz$2Ìokìsa¹ñwã4ÙÝžÀ\ÆjâTM5¸nG5>Ö­—zFa"®– 0ïj™’ b_€ Ý\f‰x4Lå›o­„q6ò‚w#üÄ#ïÒ}¹PhÇ“ i [f*üй(h« µ_õWÄyMEÙhÔ@° #‹—³V –IBEa•õôpL'„fIŠ€î›3á·èÞû‰‚¬rCӻђB]l¼&pºíaÖÅÌ©¦3* ¬~ !LÇØæXq6ž%„’~ìéA[…îcè=óU‘{ë½­¼Px²s†ìm¥ÅÁàµcKá*”JFïάšÐM¹‰´¾:3¹—õ• wè-½ÒÜW<¾§XÕDzÒ¾™àörd-N~,"‚·ò«¯ªPÖhŠ~Š™öÞâ*ò‹s©~ÀÊ)Þ>n@e‰ƒý{F8ƒxQFOrg%N†ªÐyÃYà@O®:â°ŸB¿ÖÐe_8vÃl,!¤ëP½eyí±¹|#|Lo'º}Ì{’¤XXʘô$>,]hjPâèí÷ÐsF­k."p~DáPÿ°¨ FðWéÅß**Ã`™d³EEÈÖþªÎ§y ?ħÿWÌåÿWã—…w€»%“Æß pI £|"ñrUŠ·ct¼»5›Î¿Ìê„õË(XåKã7<é’–n×JF¸ ³p³ÆþCÜ⊣E?&wÄz™ˆÏ?‚H«$Ý*b­•AÑdTFk®ƒÆ&äê£ñ۠וcW_óM.À¯+­xUü¤¬âeÄ~òx퍍Ågß;£ÁðktŽGåUÔþ“¾QÞõ÷øMÀvt»qvçèÿT#¾ b"¾G¢–Ü[eu·Z?æiõn…b~yxzx·ù!AÊ:éãý3ô~š‰÷cá$/þQØ~ ææasó/ ŸD4 endstream endobj 392 0 obj << /Type /Page /Contents 393 0 R /Resources 391 0 R /MediaBox [0 0 595.276 841.89] /Parent 386 0 R >> endobj 391 0 obj << /Font << /F17 383 0 R /F15 394 0 R >> /ProcSet [ /PDF /Text ] >> endobj 397 0 obj << /Length 8 /Filter /FlateDecode >> stream xÚ endstream endobj 396 0 obj << /Type /Page /Contents 397 0 R /Resources 395 0 R /MediaBox [0 0 595.276 841.89] /Parent 386 0 R >> endobj 398 0 obj << /D [396 0 R /XYZ 69.866 786.197 null] >> endobj 395 0 obj << /ProcSet [ /PDF ] >> endobj 438 0 obj << /Length 1268 /Filter /FlateDecode >> stream xÚí™Mw›8†÷ù^ŠTBH³kÓô49ÍIZ»í¢3j+ <òÑ_?’I iO§‰qf…û>Ü{ß«W¯f;/Þ d“(á šÌN&œF‹ £ID(™Ì“/`·ÈŒ@%í¡þš¼xƒã ‚‘€¢¹NB¦ŸBc{Š‚Aöõ-1¨T„ú¸¨çU¦Ö܏h÷~Á"ÈôSš»õÍÂÇ9!õû~ü€¢ 1°&a""&Ø$D8âˆxƆrB8,ªì< ¤ ÞAH7&Œ'Ü¡ëœÖYfáÑkxg ø K™ªysp¦ócðO-Kƒ²Ô£[¯AÂ$ð.ØÑ0Õ®IT*ûZ;³QTÌ/¶Òú“%v•vTWË,—A(è¦óTõF4Cû´!D,ÂŒh¶$–hìôáXÉe¶ÊòTe²ü_~‚4êêázaø —$¤KÓ×X¤Uú5-¥íråUYÉ•©oÃ0x›‡/ßOÇ@ΫB}Î,ÎM·kÎeßåÂ’‘—r^[-XŒ¯É î^÷^:ÍË*~­\V'ö¸ŸŸ*]“ #͍ }†]€@Vš¿n$’FŒØ“oG&N¯h{—k ûûËÒJšùÙiî^÷ZédF(“ ¥iî|D9Ÿå