convenient short names for examples - riscvarchive/riscv-CMOs-discuss GitHub Wiki

Computer architecture discussions often involve standard elements:

  • things that execute instructions
    • physically separate processors, in different ships or inside the same SOC
      • which may or may not be the same as CPUs depending on what dictionary or textbook you are using
    • hardware threads or logical processors executing on thee same physical multithreaded processor
    • RISC-V terminology "harts" (hardware threads) includes both physically separate processors and logical processors
    • and many points both in between and extrapolated...
  • memory (or memories)
  • caches
  • processes
  • threads
It is convenient to have standard short notations for such concepts.
  • P, P1, P2 .. stands for processor*: Typically I will use P or P1, P2, ... or processors, things that execute instructions.
Sometimes, as in discussions of CMOs, I will use "P" to emphasize that they are physically separate processors, not hardware threads/logical processors sharing the same processing hardware, especially since most hardware threads share processor cache.
  • M stands for memory": for many discussions it is sufficient to talk about a single memory M.
However, some examples require more than memory, e.g. M1, M2, e.g. NUMA. Others have multiple memory channels, or multiple banks of memory same channel or within the same DRAM chip or DIMM, or multiple DIMMs and ranks, or... AFAIK there are no ubiquitous standards for such component naming, but they will frequently begin with M: e.g. MB1, MB2, memory banks, MC1, MC2 memory channels, etc. Of course, and examples that deal currently with the memory subsystem the prefix and may be omitted.
  • T stands for process? No, T stands for thread? No T stands for task...:*
We often need to talk about something like a logical thread of execution, that might be time sliced or migrated between physical processors or harts. "Process" is one of the most common terms for such things, although usually process is also related to a privilege domain and OS/kernel resources. Often multiple "threads" execute within the same process. Some systems use "task" as a synonym for "process", whereas others say that a task is composed of multiple processes, a configuration which still other systems might describe as a single process/privilege domain that contains multiple kernel threads which execute independently.

Yah! do not expect consistency...

Anyway, unfortunately the initial P for Process coincides with P for Processor. So, more and more in my examples I am using T to stand for concepts such as process/task/thread. Clarification is sometimes required to indicate if all are only a specific concept are intended.

  • $ stands for cash cache? :-) *:
If anything, notation for caches is even less standardized. One only rarely sees people use the initial letter C, although C is more often seen as the last letter in a symbol: IC, DC, MLC, LLC. L1, L2, L3... Are conventional or unified caches, and I don't think I've ever seen anybody use L1C consistently. UL1 and UL2 are occasional used, but the U is often omitted I am unduly fond of using $ to stand for cache: I$, D$, L2$... One can replicate the bucks to indicate cache level: L1=$, IL1=I$, DL1=D$, L2=$$, etc. but this amusing notation fails when we all caches described as L0 or L1.5, and it becomes very clumsy by the time were talking about three or four levels of cache L3=$$$, L4=$$$$ ...

So, this wiki page is more of a warning of notations that you might occasionally encounter, especially the stuff that I write, rather than an attempt to describe a single consistent notation that has no redundancy.

 one occasionally sees
 e.g. rather than saying Hart1, Hart2
⚠️ **GitHub.com Fallback** ⚠️