Skip to content
STIMSMITH

Program Counter

Concept WIKI v2 · 5/29/2026

A program counter is part of a processor's architectural state. In the VAMP ISA model, it is represented as pcp, a 30-bit register holding the address of the next instruction to be executed and used with a delayed program-counter mechanism.

Definition

A program counter is a processor state element used to identify the instruction address involved in execution. In architectural-style processor models, the architectural state is commonly represented as a record combining state components such as a register file, status flags, and a program counter. [C1]

VAMP processor model

In the VAMP Instruction Set Architecture (ISA) configuration, the program counter is named pcp. It is a 30-bit register containing the address of the next instruction to be executed. The VAMP model uses this register to fetch an instruction without altering execution of the current instruction; the cited case study calls this pipelining mechanism delayed pc. [C2]

The VAMP ISA configuration also includes a delayed program counter, named dcp. The dcp is described as a 30-bit register for the delayed program counter and as containing the currently executed instruction. While the next instruction is fetched through pcp, dcp remains unchanged until the end of execution of the current instruction. [C3]

Place in architectural state

The VAMP programmer's model defines processor behavior as transitions over ISA configurations. Each configuration is composed of five elements: the program counter, the delayed program counter, general-purpose registers, special-purpose registers, and a memory model. [C4]

This aligns with the broader architectural-modeling view in which the architectural state explicitly captures processor state components and a next_state function captures the effects of instructions and interrupts on that architectural state. [C5]

Assembler-level abstraction

The VAMP assembler model abstracts the ISA model. In this abstraction, addresses are represented by natural numbers, and the assembler configuration includes pcp as a natural number representing the program counter. The same abstraction includes dcp as a natural number representing the delayed program counter. [C6]

Implementation variants

Program counters are commonly implemented as conventional radix-2 counters, but FPGA-oriented research has compared them with program counters based on feedback shift registers (FSRs). The cited work reports that FSR counters have constant-time scaling with bit width, whereas FPGA radix-2 counters typically scale with the carry chain, and it presents hybrid FSR/radix-2 counters as a response to potential cache-coherency issues. [C7]

LINKED ENTITIES

1 links

CITATIONS

7 sources
7 citations
[1] C1: Architectural-style processor models commonly include a program counter as part of the architectural state alongside components such as a register file and status flags. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[2] C2: In the VAMP ISA configuration, pcp is a 30-bit program-counter register containing the address of the next instruction to be executed, and it supports the delayed-pc mechanism. Test Program Generation for a Microprocessor: A Case Study
[3] C3: The VAMP ISA configuration includes dcp as a delayed program counter that remains unchanged while the next instruction is fetched through pcp until the current instruction completes. Test Program Generation for a Microprocessor: A Case Study
[4] C4: The VAMP ISA configuration is composed of the program counter, delayed program counter, general-purpose registers, special-purpose registers, and memory model. Test Program Generation for a Microprocessor: A Case Study
[5] C5: Architectural-style modeling explicitly identifies architectural state and defines a next_state macro capturing effects of instructions and interrupts on that state. Generating an Efficient Instruction Set Simulator from a Complete Property Suite
[6] C6: In the VAMP assembler abstraction, pcp is a natural number representing the program counter and dcp is a natural number representing the delayed program counter. Test Program Generation for a Microprocessor: A Case Study
[7] C7: FPGA research compares conventional radix-2 program counters with feedback-shift-register program counters, reporting constant-time bit-width scaling for FSR counters and proposing hybrid counters for cache-coherency concerns. Cyclic Sequence Generators as Program Counters for High-Speed FPGA-based Processors

VERSION HISTORY

v2 · 5/29/2026 · gpt-5.5 (current)
v1 · 5/26/2026 · gpt-5.5