Von Neumann architecture
I was reading about computer architecture and the Von Neumann architecture came up. I want to learn more about it.
References
Related
- Central Processing Unit
- A central processing unit (CPU), also called a processor, is the most important processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, logic, controlling, and input/output operations. This role contrasts with that of external components, such as main memory and I/O circuitry, and specialized coprocessors such as graphics processing units (GPUs).
- Arithmetic Logic Unit
- In computing, an arithmetic logic unit (ALU) is a combinational digital circuit that performs arithmetic and bitwise operations on integer binary numbers. This is in contrast to a floating-point unit (FPU), which operates on floating point numbers. It is a fundamental building block of many types of computing circuits, including the central processing unit (CPU) of computers, FPUs, and graphics processing units (GPUs).
- Processor Registers
- A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. In computer architecture, registers are typically addressed by mechanisms other than main memory, but may in some cases may be assigned a memory address.
- Control Unit
- The control unit (CU) is a component of a computer's central processing unit (CPI) that directs the operation of the processor. A CU typically uses a binary decoder to convert coded instructions into timing and control signals that direct the operation of other units (memory, ALU, I/O devices).
- Instruction Register
- In computing, the instruction register (IR) or current instruction register (CIR) is the part of a CPU's control unit that holds the instruction currently being executed or decoded. In simple processors, each instruction to be executed is loaded into the instruction register, which holds it while it is decoded, prepared and ultimately executed, which can take several steps.
- Program Counter
- The program counter, commonly called the instruction pointer is a processor register that indicates where a computer is in its program sequence. Usually, the program counter is incremented after fetching an instruction, and holds the memory address of the next instruction that would be executed.
- Stored-program Computer
- A stored-program computer is a computer that stores program instructions in electronically, electromagnetically, or optically accessible memory. This contrasts with systems that stored the program instructions with plugboards or similar mechanisms. The definition is often extended with the requirement that the treatment of programs and data in memory be interchangeable or uniform.
- Instruction Fetch
- The instruction cycle (also known as the fetch-decode-execute cycle, or simply the fetch-execute cycle) is the cycle that the central processing unit (CPU) follows from boot-up until the computer has shut down in order to process instructions. It is composed of three main stages: the fetch stage, the decode stage, and the execute stage.
- Bus
- In computer architecture, a bus is a communication system that transfers data between components inside a computer, or between computers. This expression covers all related hardware components (wire, optical fiber, etc.) and software, including communication protocols.
- self-modifying code
- In computer science, self-modifying code (SMC) is code that alters its own instructions while it is executing - usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code, thus simplifying maintenance. The term is usually only applied to code where the self-modification is intentional, not in situations where code accidentally modifies itself due to an error such as a buffer overflow.
Notes
The von Neumann architecture - also known as the von Neumann model or Princeton architecture - is a computer architecture based on the First Draft of a Report on the EDVAC, written by John von Neumann in 1945, describing designs discussed with John Mauchly and J. Presper Eckert at the University of Pennsylvania's Moore School of Electrical Engineering. The document describes a design architecture for an electronic digital computer with these components:
- A processing unit with both an arithmetic logic unit and processor registers
- A control unit that includes an instruction register and a program counter
- Memory that stores data and instructions
- External mass storage
- Input and output mechanisms
The attribution of the invention of the architecture to von Neumann is controversial. The term von Neumann architecture
has evolved to refer to any stored-program computer in which an instruction fetch and data operation cannot occur at the same time (since they share a common bus). This is referred to as the von Neumann Bottleneck, which often limits the performance of the corresponding system.
The von Neumann architecture is simpler than the Harvard Architecture (which has one dedicated set of address and data buses for reading and writing to memory and another set of address and data buses to fetch instructions).
Stored-program computers were an advancement over the manually reconfigured or fixed function computers of the 1940s. The vast majority of modern computers use the same hardware mechanism to encode and store both data and program instructions, but have caches between the CPU and memory, and, for the caches closest to the CPU, have separate caches for instructions and data, so that most instruction and data fetches use separate buses.
The earliest computing machines - and still some simple computers (like desk calculators) - have fixed programs. Changing the program of a fixed-program machine requires rewiring, restructuring, or redesigning the machine. With the proposal of the stored-program computer, the laborious process of changing the computer could be skipped. A stored-program computer includes, by design, and instruction set, and can store in memory a set of instructions that details the computation. A stored-program design allows for self-modifying code.
On a large scale, the ability to treat instructions as data is what makes assemblers, compilers, linkers, loaders, and other automated programming tools possible. It makes programs that write programs
possible. Some high-level languages leverage the von Neumann architecture by providing an abstract, machine-independent way to manipulate executable code at runtime or by using runtime information to tune just-in-time compilation.
Comments
You have to be logged in to add a comment
User Comments
There are currently no comments for this article.