3 ms·
Tbh, it is really hard to have an "accurate" model of a very wide OoO core. It is far too dynamic, you instruction scheduler cannot predict the occupancy of the
by sklogic 11y ago
Tbh, it is really hard to have an "accurate" model of a very wide OoO core. It is far too dynamic, you instruction scheduler cannot predict the occupancy of the pipelines.
- mafribe 11y agoIn order to determine the meaning of a programming language, you need a platform independent memory model. This is increasingly important as CPUs are more and more concurrent and programming languages are exposing some of that concurrency to the programmer. Of course the language designer can always play it safe and choose a ridiculous memory model like sequential consistency, but that prevents many useful compiler optimisations. At the other extreme you could explicitly state that the memory model is a specific processor, but then (a) the language becomes too platform dependent and program semantics will change with every processor upgrade. (b) nobody really knows what exactly the memory model is in any meaningful sense because even the manufacturers don't know (other than saying: it is what the CPU does). That means the semantics of the language is unclear. What you want is something between the Scylla of inefficiency and the Charybdis of platform dependence. This is a difficult problem, and unsolved even for as simple a language as C, see e.g. [1]. Indeed it is unclear if memory models possessing the required attributes even exist, maybe it's contradictory to assume that they can. [1] M. Batty et al., The Problem of Programming Language Concurrency Semantics. https://www.cl.cam.ac.uk/~jp622/the_problem_of_programming_language_concurrency_semantics.pdf https://www.cl.cam.ac.uk/~jp622/the_problem_of_programming_l...