\ProvidesPackage{tugraz_defaults} %\usepackage[hyphens]{url} \PassOptionsToPackage{bookmarks,hidelinks}{hyperref} \usepackage{hyperref} \hypersetup{breaklinks=true} \usepackage[utf8]{inputenc} % \usepackage[table,dvipsnames]{xcolor} \usepackage{amsmath} % defined by ACM \usepackage{amssymb} % defined by ACM \usepackage{array} % defined by ACM \usepackage{arydshln} \usepackage{booktabs} % defined by ACM % \usepackage{cite} % to sort citations \usepackage{collcell} \usepackage{comment} \usepackage{float} \usepackage{ifthenx} \usepackage{lipsum} \usepackage{makecell} \usepackage{multirow} \usepackage{adjustbox} \usepackage{multicol} \usepackage{nicefrac} \usepackage{paralist} \usepackage{csquotes} %\usepackage{flushend} % \usepackage{upgreek} \usepackage{siunitx} \sisetup{detect-weight=true,binary-units=true,group-separator = \text{\,}} \usepackage{threeparttable} % \PassOptionsToPackage{table}{xcolor}\usepackage{xcolor} \usepackage{xspace} \usepackage{placeins} % \usepackage[numbers,sort&compress]{natbib} \def\subheading#1{\medskip\noindent{\boldmath\textbf{#1}}~\ignorespaces} \usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X} \usepackage{xcolor} \usepackage{fdsymbol} % ------------------------------ % Fancy plots \usepackage{tikz} \usetikzlibrary{external} %\tikzexternalize[prefix=tikz/,only named=true,mode=list and make] % TODO \usepackage{pgfplots} \usepackage{pgfplotstable} \usetikzlibrary{pgfplots.groupplots} \usetikzlibrary{arrows} \usetikzlibrary{patterns} \usetikzlibrary{positioning} \usetikzlibrary{decorations.pathreplacing} \usetikzlibrary{shapes.arrows} \usetikzlibrary{shapes.geometric,shapes.misc} \usetikzlibrary{pgfplots.groupplots} \pgfplotsset{compat=newest} % ------------------------------ % ------------------------------ % Fancy captions \usepackage{caption} \usepackage{subcaption} \captionsetup{compatibility=false} \captionsetup[figure]{aboveskip=0.5em, belowskip=0.5em,labelfont={small},font={small}} %\captionsetup[subfigure]{skip=10pt,labelfont={bf,normal},font={bf,normal}} \captionsetup[table]{aboveskip=0.5em, belowskip=0.5em,labelfont={small},font={small}} \captionsetup[lstlisting]{labelformat=simple,skip=5pt,labelfont={small},font={small}} \captionsetup[subfloat]{font={small}} % ------------------------------ \definecolor{lukasred}{HTML}{950000} \definecolor{andreasgreen}{HTML}{e9f5db} \definecolor{vsblack}{cmyk}{0,0,0,1} \definecolor{vswhite}{HTML}{24292e} \definecolor{vsbackground}{HTML}{ffffff} %background in Visual Studio \definecolor{vscomment}{HTML}{047f04} %comments in Visual Studio \definecolor{vskeyword}{HTML}{0024fe} %keywords in Visual Studio \definecolor{vsstring}{cmyk}{0,0.26,0.38,0} %strings in Visual Studio \definecolor{vsctrlflow}{HTML}{ad1eda} %if/else,switch/case etc. in Visual Studio \definecolor{vslocalvar}{HTML}{001780} %local variables in Visual Studio \definecolor{vsclass}{HTML}{1d809d} %class types in Visual Studio \definecolor{vsfunctions}{HTML}{7a5d27} %enumerations and methods in Visual Studio % ------------------------------ % Fancy notes \usepackage{letltxmacro} \setlength{\marginparwidth}{1.5cm} %\reversemarginpar \usepackage{todonotes} \usepackage{marginnote} \let\marginpar\marginnote \LetLtxMacro{\oldtodo}{\todo} \renewcommand{\todo}[2][]{\tikzexternaldisable\oldtodo[fancyline,size=\footnotesize,#1]{#2}\tikzexternalenable} \renewcommand{\todo}[1]{\tikzexternaldisable\oldtodo[fancyline,size=\footnotesize]{#1}\tikzexternalenable} \newcommand{\noted}[2][]{\tikzexternaldisable\oldtodo[color=red!40,fancyline,size=\footnotesize,#1]{\textbf{Da} #2}\tikzexternalenable} \renewcommand{\noted}[1]{\tikzexternaldisable\oldtodo[color=red!40,fancyline,size=\footnotesize]{\textbf{Da} #1}\tikzexternalenable} \newcommand{\notey}[2][]{\tikzexternaldisable\oldtodo[color=violet!40,fancyline,size=\footnotesize,#1]{\textbf{Y} #2}\tikzexternalenable} \renewcommand{\notey}[1]{\tikzexternaldisable\oldtodo[color=violet!40,fancyline,size=\footnotesize]{\textbf{Y} #1}\tikzexternalenable} \newcommand{\notema}[2][]{\tikzexternaldisable\oldtodo[color=blue!40,fancyline,size=\footnotesize,#1]{\textbf{Ma} #2}\tikzexternalenable} \renewcommand{\notema}[1]{\tikzexternaldisable\oldtodo[color=blue!40,fancyline,size=\footnotesize]{\textbf{Ma} #1}\tikzexternalenable} \newcommand{\notel}[2][]{\tikzexternaldisable\oldtodo[color=lukasred,fancyline,size=\footnotesize,#1]{\textbf{L} #2}\tikzexternalenable} \renewcommand{\notel}[1]{\tikzexternaldisable\oldtodo[color=lukasred,fancyline,size=\footnotesize]{\textbf{L} #1}\tikzexternalenable} \newcommand{\notea}[2][]{\tikzexternaldisable\oldtodo[color=andreasgreen,fancyline,size=\footnotesize,#1]{\textbf{A} #2}\tikzexternalenable} \renewcommand{\notea}[1]{\tikzexternaldisable\oldtodo[color=andreasgreen,fancyline,size=\footnotesize]{\textbf{A} #1}\tikzexternalenable} \newcommand{\notej}[2][]{\tikzexternaldisable\oldtodo[color=blue!40,fancyline,size=\footnotesize,#1]{\textbf{J} #2}\tikzexternalenable} \renewcommand{\notej}[1]{\tikzexternaldisable\oldtodo[color=blue!40,fancyline,size=\footnotesize]{\textbf{J} #1}\tikzexternalenable} \newcommand{\notef}[2][]{\tikzexternaldisable\oldtodo[color=yellow!40,fancyline,size=\footnotesize,#1]{\textbf{F} #2}\tikzexternalenable} \renewcommand{\notef}[1]{\tikzexternaldisable\oldtodo[color=yellow!40,fancyline,size=\footnotesize]{\textbf{F} #1}\tikzexternalenable} \newcommand{\notes}[2][]{\tikzexternaldisable\oldtodo[color=orange!40,fancyline,size=\footnotesize,#1]{\textbf{S} #2}\tikzexternalenable} \renewcommand{\notes}[1]{\tikzexternaldisable\oldtodo[color=orange!60,fancyline,size=\footnotesize]{\textbf{S} #1}\tikzexternalenable} \newcommand{\TODO}{\hl{TODO}\xspace } % ------------------------------ % ------------------------------ % Fancy figures \usepackage{xparse} \setdefaultleftmargin{1.5em}{}{}{}{.5em}{.5em} \NewDocumentEnvironment{figureA}{omo}{\begin{figure}[#1]\tikzsetnextfilename{#2}\centering}{\IfNoValueTF {#3}{}{\caption{#3}}\label{fig:#2}\end{figure}} \NewDocumentEnvironment{subfigureA}{ommo}{\begin{subfigure}[#1]{#2}\tikzsetnextfilename{#3}\centering}{\IfNoValueTF {#4}{}{\caption{#4}}\label{fig:#3}\end{subfigure}} \NewDocumentEnvironment{figureA*}{omo}{\begin{figure*}[#1]\tikzsetnextfilename{#2}\centering}{\IfNoValueTF {#3}{}{\caption{#3}}\label{fig:#2}\end{figure*}} \NewDocumentEnvironment{subfigureA*}{ommo}{\begin{subfigure*}[#1]{#2}\tikzsetnextfilename{#3}\centering}{\IfNoValueTF {#4}{}{\caption{#4}}\label{fig:#3}\end{subfigure*}} % ------------------------------ % ------------------------------ % Fancy algorithms and code \usepackage{algorithmic} \usepackage[ruled]{algorithm2e} \usepackage{listings} \newfloat{listing}{tbhp}{lst}%[section] \floatname{listing}{Listing} \lstset{ % backgroundcolor=\color{vsbackground}, basicstyle=\scriptsize\bf\ttfamily\upshape\color{vswhite}, belowcaptionskip=1\baselineskip, breakatwhitespace=true, breakautoindent=false, breakindent=0pt, breaklines=true, % sets automatic line breaking captionpos=b, % sets the caption-position to bottom columns=fixed, commentstyle=\color{vscomment}, emphstyle={[2]\color{vslocalvar}}, emphstyle={[3]\color{vsclass}}, emphstyle={[4]\color{vsfunctions}}, emphstyle=\color{vsctrlflow}, escapeinside={(*@}{@*)}, extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 frame=single, % adds a frame around the code %framesep=5pt, framexleftmargin=13pt, framexrightmargin=-20.5pt, keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) keywordstyle=\color{vskeyword}, language=C, % the language of the code %linewidth=\listingwidth, morecomment=[s][\color{vscomment}]{/*-}{*/}, morecomment=[s][\color{vscomment}]{/*+}{*/}, numbers=left, % where to put the line-numbers; possible values are (none, left, right) numbersep=4pt, % how far the line-numbers are from the code numberstyle=\tiny\bf\color{vsblack}, postbreak=\mbox{\textcolor{red}{->}\space}, rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) rulecolor=\color{vsbackground}, rulesep=0pt, showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' showstringspaces=false, % underline spaces within strings only showtabs=false, % show tabs within strings adding particular underscores stringstyle=\color{vsstring}, tabsize=2, % sets default tabsize to 2 spaces xleftmargin=10pt, xrightmargin=10pt } \lstdefinelanguage [x64]{Assembler} % add a "x64" dialect of Assembler [x86masm]{Assembler} % based on the "x86masm" dialect % with these extra keywords: {morekeywords={CDQE,CQO,CMPSQ,CMPXCHG16B,JRCXZ,LODSQ,MOVSXD, % POPFQ,PUSHFQ,SCASQ,STOSQ,IRETQ,RDTSCP,SWAPGS, % rax,rdx,rcx,rbx,rsi,rdi,rsp,rbp, % r8,r8d,r8w,r8b,r9,r9d,r9w,r9b}} % etc. \lstdefinestyle{cpp} { language=c++, % syntax higlights morekeywords={partial, var, value, get, set, uint64\_t, func}, % control flow emph={if, else, return, throw, switch, case, for, repeat}, % local vars emph={[2]start, end, samples, N, L, cache\_line, victim_cache_line,KEY_FLAG_REVOKED,keyring,ns}, % class and structs emph={[3]SomeOwnClassType, Measurement, Sample, key}, % functions emph={[4]measure,fill,ioctl,measure_power,record_sample,diff,access,find\_keyring\_by\_name,list\_for\_each\_entry,test\_bit,kuid_has_mapping,keyctl_join_session_keyring,KEYCTL_JOIN_SESSION_KEYRING}, } \usepackage{fancyvrb} \lstdefinestyle{asm} { language={[x64]Assembler}, % syntax higlights morekeywords={ud2,syscall,movq,prefetcht0}, % control flow emph={}, % local vars emph={[2]victim\_cache\_line,MSR\_PKG\_POWER\_LIMIT}, % class and structs emph={[3]rip,rax,rdx,eax,rsp}, % functions emph={[4]module\_ioctl,misspeculation,retpoline,retpoline\_end}, } \newcommand\Highlight[1]{\underline{\textcolor{red}{#1}}} \newcommand\HighlightB[1]{\textbf{\textcolor{blue}{#1}}} \newcommand\HighlightD[1]{{\textcolor{green!80!black}{#1}}} \newenvironment{Plain}[1][] { \VerbatimEnvironment% \begin{Verbatim}[#1]} { \end{Verbatim} } % ------------------------------ % ------------------------------ % New commands \newcommand{\gbr}[1]{\left\{#1\right\}} %\DeclareMathOperator{\KB}{KB} \newcommand{\SIx}[1]{\num{#1}\relax} %\DeclareMathOperator*{\argmax}{arg\,max} %\DeclareMathOperator*{\argmin}{arg\,min} \newcommand{\xor}{\oplus} \newcommand{\etal}{et~al.\ } % typography nerd \newcommand{\ie}{\textit{i.e.},\ } % typography nerd \newcommand{\eg}{e.g.,\ } % typography nerd \newcommand{\cf}{cf.\ } % typography nerd \newcommand{\KeyDrown}{\emph{KeyDrown}\xspace} \newcommand{\FlushOnly}{Flush+Flush\xspace} \newcommand{\clflush}{\texttt{clflush}\xspace} \newcommand{\FlushReload}{Flush+\allowbreak Reload\xspace} \newcommand{\EvictReload}{Evict+\allowbreak Reload\xspace} \newcommand{\EvictTime}{Evict+\allowbreak Time\xspace} \newcommand{\PrimeProbe}{Prime+\allowbreak Probe\xspace} \newcommand{\MultiPrimeProbe}{Multi-\allowbreak Prime+\allowbreak Probe\xspace} \newcommand{\FlushFlush}{Flush+\allowbreak Flush\xspace} \newcommand{\GTKplus}{\emph{GTK+}\xspace} \newcommand{\libgdk}{\emph{libgdk}\xspace} \newcommand{\OnePlus}{OnePlus 3t\xspace} \newcommand{\FScore}{F-score\xspace} \newcommand{\ReqOne}{\emph{R1}\xspace} \newcommand{\ReqTwo}{\emph{R2}\xspace} \newcommand{\ReqThree}{\emph{R3}\xspace} \usepackage{pifont} \newcommand{\xmark}{\leavevmode{\color{red}\ding{55}}}% \newcommand{\cmark}{\leavevmode{\color{TolDarkGreen}\ding{51}}}% \newcommand{\tmark}{\leavevmode{\color{orange!90!red}\large $\mathbf{\thicksim}$}}% \mathchardef\mhyphen="2D \newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}} \newcommand*\circledb[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt,fill=black,text=white] (char) {#1};}} \newcommand*\circleds[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=1pt] (char) {\footnotesize #1};}} \newcommand*\circledsb[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=0.7pt,fill=black,text=white] (char) {\footnotesize #1};}} % ------------------------------ \newcommand{\FakeMarker}{{\color{red}$\blacktriangle$}} \newcommand{\RealMarker}{{\color{green}$\bullet$}} \newfloat{lstfloat}{htbp}{lop} \floatname{lstfloat}{Listing} \usepackage{epsdice} \usepackage{soul} \usepackage[noabbrev,capitalize]{cleveref} % correct bad hyphenation here \hyphenation{op-tical net-works semi-conduc-tor row-ham-mer} \widowpenalty10000 \clubpenalty10000 % plot default colors \definecolor{TolDarkPurple}{HTML}{332288} \definecolor{TolDarkBlue}{HTML}{6699CC} \definecolor{TolLightBlue}{HTML}{88CCEE} \definecolor{TolLightGreen}{HTML}{44AA99} \definecolor{TolDarkGreen}{HTML}{117733} \definecolor{TolDarkBrown}{HTML}{999933} \definecolor{TolLightBrown}{HTML}{DDCC77} \definecolor{TolDarkRed}{HTML}{661100} \definecolor{TolLightRed}{HTML}{CC6677} \definecolor{TolLightPink}{HTML}{AA4466} \definecolor{TolDarkPink}{HTML}{882255} \definecolor{TolLightPurple}{HTML}{AA4499} % plot \definecolor{PlotColorBlue}{HTML}{2C7FB8} \definecolor{PlotColorRed}{HTML}{F03B20} \definecolor{PlotColorGreen}{HTML}{31A354} % colors \definecolor{red}{HTML}{F03B20} \definecolor{yellow}{HTML}{F5EE9A} \definecolor{green}{HTML}{BEDB39} \definecolor{blue}{HTML}{2C7FB8} \pgfplotscreateplotcyclelist{mbarplot cycle}{% {draw=TolDarkBlue, fill=TolDarkBlue!70}, {draw=TolLightBrown, fill=TolLightBrown!70}, {draw=TolLightGreen, fill=TolLightGreen!70}, {draw=TolDarkPink, fill=TolDarkPink!70}, {draw=TolDarkPurple, fill=TolDarkPurple!70}, {draw=TolDarkRed, fill=TolDarkRed!70}, {draw=TolDarkBrown, fill=TolDarkBrown!70}, {draw=TolLightRed, fill=TolLightRed!70}, {draw=TolLightPink, fill=TolLightPink!70}, {draw=TolLightPurple, fill=TolLightPurple!70}, {draw=TolLightBlue, fill=TolLightBlue!70}, {draw=TolDarkGreen, fill=TolDarkGreen!70}, } \pgfplotscreateplotcyclelist{mlineplot cycle}{% {TolDarkBlue, mark=*, mark size=1.5pt}, {TolLightBrown, mark=square*, mark size=1.3pt}, {TolLightGreen, mark=triangle*, mark size=1.5pt}, {TolDarkBrown, mark=diamond*, mark size=1.5pt}, } \pgfplotsset{ compat=1.9 } \pgfplotsset{ mlineplot/.style={ % mbaseplot, % xmajorgrids=true, % ymajorgrids=true, % major grid style={dotted}, % axis x line=bottom, % axis y line=left, % legend style={ % cells={anchor=west}, % draw=none % }, % cycle list name=mlineplot cycle, }, } \pgfplotsset{ mbarplot base/.style={ mbaseplot, bar width=6pt, axis y line*=none, }, } \pgfplotsset{ mbarplot/.style={ mbarplot base, ybar, xmajorgrids=false, ymajorgrids=true, area legend, legend image code/.code={% \draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm); }, cycle list name=mbarplot cycle, }, } \pgfplotsset{ horizontal mbarplot/.style={ mbarplot base, xmajorgrids=true, ymajorgrids=false, xbar stacked, area legend, legend image code/.code={% \draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm); }, cycle list name=mbarplot cycle, }, } \pgfplotsset{ mbaseplot/.style={ legend style={ draw=none, fill=none, cells={anchor=west}, }, x tick label style={ font=\footnotesize }, y tick label style={ font=\footnotesize }, legend style={ font=\footnotesize }, major grid style={ dotted, }, axis x line*=bottom, }, disable thousands separator/.style={ /pgf/number format/.cd, 1000 sep={} }, } \usepackage{diagbox} \usepackage{oplotsymbl} \LetLtxMacro{\oldcircletfill}{\circletfill} \LetLtxMacro{\oldcirclet}{\circlet} \LetLtxMacro{\oldcircletfillhl}{\circletfillhl} \renewcommand{\circletfill}{\raisebox{-0.9pt}{\tikzsetnextfilename{circletfill}\oldcircletfill}} \renewcommand{\circlet}{\raisebox{-0.9pt}{\tikzsetnextfilename{circlet}\oldcirclet}} \renewcommand{\circletfillhl}{\raisebox{-0.9pt}{\tikzsetnextfilename{circletfillhl}\oldcircletfillhl}} \newcommand{\cmarkfull}{\multicolumn{1}{c} {\circletfill \phantom{*}}} \newcommand{\cmarkempty}{\multicolumn{1}{c} {\circlet \phantom{*}}} \newcommand{\cmarkhalf}{\multicolumn{1}{c} {\circletfillhl \phantom{*}}} \newcommand{\cstarletfill}{\multicolumn{1}{c} {\starletfill \phantom{*}}} \newcommand{\cstarlet}{\multicolumn{1}{c} {\starlet \phantom{*}}} \newcommand{\cmarkfulls}{\multicolumn{1}{c} {\circletfill *}} \newcommand{\cmarkemptys}{\multicolumn{1}{c} {\circlet *}} \newcommand{\cmarkhalfs}{\multicolumn{1}{c} {\circletfillhl *}} \newcommand{\cmarkfulld}{\multicolumn{1}{c} {\circletfill $^\dagger$}} \newcommand{\cmarkemptyd}{\multicolumn{1}{c} {\circlet $^\dagger$}} \newcommand{\cmarkhalfd}{\multicolumn{1}{c} {\circletfillhl $^\dagger$}} % cite authors % \newcommand{\citeA}[1]{\citeauthor{#1}~\cite{#1}} % micro ops \newcommand{\muop}{$\mu$OP\xspace} \newcommand{\muops}{$\mu$OPs\xspace} \RequirePackage{titlesec} \titlespacing*{\section}{0pt}{1.6ex}{1.2ex} \titlespacing*{\subsection}{0pt}{1.3ex}{1ex} %\titlespacing*{\subsubsection}{0pt}{0.4ex}{0.05ex} \lstdefinestyle{python}{ language=python, % syntax higlights morekeywords={False, True}, % control flow emph={if, else, return, throw, switch, case, for, repeat, import}, % local vars emph={[2]cpu, self, stable_periode, STABLE, PWRSAVE, POWERSAVE}, % class and structs emph={[3]SUIT_DOWN_simple, PowerState}, % functions emph={[4]__init__, disabled_instruction_ex_handler, timer_interrupt_handler}, } \lstdefinestyle{cppinline}{ style = cpp, basicstyle=\small\bf\ttfamily\upshape\color{vswhite}, } \lstdefinestyle{asminline}{ style = asm, basicstyle=\small\bf\ttfamily\upshape\color{vswhite}, } \lstdefinestyle{pythoninline}{ style = python, basicstyle=\small\bf\ttfamily\upshape\color{vswhite}, } \newcommand{\asm}[1]{\lstinline[style=asm]{#1}\xspace} \newcommand{\cpp}[1]{\lstinline[style=cpp]{#1}\xspace} \newcommand{\py}[1]{\lstinline[style=python]{#1}\xspace}