  With the end of Moore's Law, there is a growing demand for rapid
architectural innovations in modern processors, such as RISC-V custom
extensions, to continue performance scaling. Program sampling is a crucial step
in microprocessor design, as it selects representative simulation points for
workload simulation. While SimPoint has been the de-facto approach for decades,
its limited expressiveness with Basic Block Vector (BBV) requires
time-consuming human tuning, often taking months, which impedes fast innovation
and agile hardware development. This paper introduces Neural Program Sampling
(NPS), a novel framework that learns execution embeddings using dynamic
snapshots of a Graph Neural Network. NPS deploys AssemblyNet for embedding
generation, leveraging an application's code structures and runtime states.
AssemblyNet serves as NPS's graph model and neural architecture, capturing a
program's behavior in aspects such as data computation, code path, and data
flow. AssemblyNet is trained with a data prefetch task that predicts
consecutive memory addresses.
  In the experiments, NPS outperforms SimPoint by up to 63%, reducing the
average error by 38%. Additionally, NPS demonstrates strong robustness with
increased accuracy, reducing the expensive accuracy tuning overhead.
Furthermore, NPS shows higher accuracy and generality than the state-of-the-art
GNN approach in code behavior learning, enabling the generation of high-quality
execution embeddings.
