# A Survey of Machine Learning-Based System Performance Optimization Techniques
## 2 Background
\begin{table}
\begin{tabular}{c c c} \hline \hline
**Research** & **Model** & **Description** \\ \hline \multirow{7}{*}{Learned Index Structures [7]} & B-Tree index & It replaces a B-Tree with a neural network to improve query speed. A \\  & Single and Multi-layer & regression-based model predicts the position of the key if it is given as the input. \\  & Perceptron & The model is hierarchically organized for higher accuracy. \\ \cline{2-3}  & Hash-Map index & It replaces a hash-function with a neural network to solve the collision problem, \\  & Single and Multi-layer & which is the major problem of hashing technique. When a key is given as an input \\  & Perceptron & value, a regression-based model predicts the position of the key. This model \\ \cline{2-3}  & Bloom filter & It includes a neural network to minimize the spatial overhead and false positive \\  & RNN & rate of Bloom filter. It designed a classification model that treats Bloom filter as a \\ \hline \multirow{7}{*}{Pavo [8]} & \multirow{7}{*}{LSTM} & It replaces a hash-function with LSTM to increase the space utilization rate of \\  & & inverted indexing. The architecture consists of a total of four stages: Input Stage is \\ \cline{1-1}  & & pre-processing data, Disperse Stage distributes the sub-models uniformly, \\ \cline{1-1}  & & Mapping Stage maps the sub-data to a local hash, and the Join Stage creates a \\ \cline{1-1} \cline{2-3}  & & global hash table. \\ \hline \multirow{7}{*}{Learned Branch Predictor [9]} & \multirow{7}{*}{Perceptron} & It replaces the traditional two-level scheme counter table with perceptron for \\  & & efficient branch prediction. Given input is indexed into one of the perceptron \\ \cline{1-1}  & Predictor [9] & tables, and the model classifies whether the branch will be taken or will not be \\ \hline \multirow{7}{*}{NN-sort [10]} & \multirow{7}{*}{Multi-layer Perceptron} & It is a regression-based neural network to improve sorting performance. The \\  & & overall framework consists of three stages: the input phase is a step of \\ \cline{1-1}  & & pre-processing the input data, the sorting phase is a step of sorting the data by \\ \cline{1-1}  & & repeatedly inputting data into the model. Finally, there is a polish phase to correct \\ \cline{1-1}  & & inaccurately sorted elements to produce an accurate result. \\ \hline \multirow{7}{*}{MER-sort [11]} & \multirow{7}{*}{Perceptron} & It is a machine learning sorting algorithm-based radix sort. Similar to radix sort, \\ \cline{1-1}  & & this model proceeds sorting by separating the unordered keys into partial buckets. \\ \hline \multirow{7}{*}{Learned Reuse Predictor [12]} & \multirow{7}{*}{Perceptron} & It is a perceptron-based reuse predictor to improve the accuracy of reuse \\ \cline{1-1}  & & prediction. However, an actual neural network is not applied, it only brought an \\ \cline{1-1}  & Predictor [12] & idea of a perceptron. The multiple inputs are given, and it is indexed each weight \\ \cline{1-1}  & & table using input and PC, and it conducts prediction by adding each weight. \\ \hline \multirow{7}{*}{Learned Cache Prefetching [13,14]} & \multirow{7}{*}{Istm} & It is a perceptron-based cache prefetching technique to reduce unnecessary \\ \cline{1-1}  & & prefetching. The basic configuration is the traditional prefetcher that proposes the \\ \cline{1-1}  & & block. It keeps the latest cache miss address, and perceptron determines whether \\ \cline{1-1}  & & the block is accepted or not. \\ \cline{1-1} \cline{2-3}  & & It is a neural network-based prefetcher considering data distribution. Two \\ \cline{1-1}  & & LSTM-based architectures are proposed. The first is embedding LSTM. If the \\ \cline{1-1}  & & embedded Program Counter (PC) and delta (a distance between two addresses) \\ \cline{1-1}  & & are given as input, the delta value is predicted. The second is Clustering + LSTM. \\ \cline{1-1}  & & It separates various cluster regions according to addresses and predicts deltas \\ \cline{1-1}  & & within the cluster. \\ \hline \hline \end{tabular}
\end{table}