“…Applying ML for system design has a twofold meaning: 1 the reduction of burdens on human experts designing systems manually, and 2 the close of the positive feedback loop, i.e., architecture/system for ML and simultaneously ML for architecture/system, encouraging improvements on both sides. These applications include predictive performance modeling [18,35,44,45,52,56,90], efficient design space exploration [36,38,49,92], cache replacement [5,70,80], prefetcher [8,28,93], branch prediction [25,37], NoC design [21,63,85], power and resource management [4,31], task allocation [51,94], malware detection [15,59], compiler design [53,76], and so on.…”