RAM stands
for ‘Random Access Memory’, the computer’s main memory.
No memory, no computing power. Just like the human brain, which helps to
determine what to do and when, computers need blocks of space which it
can address from time to time to help in processing arithmetical and logical
operations. The bus interface unit retrieves data and instructions from
the RAM. Information goes either to a code cache, which stores the instructions
that tell the processor what to do or to a data cache, where the data to
be processed are stored until needed by other parts of the microprocessor.
The branch predictor unit anticipates the most likely path the instructions
will take, thus getting a head start on the work. The instruction fetch
and decode unit translate instructions into simple operations that the
execution units can perform. The reservation station and reorder buffer
determine the most efficient order for instructions to be processed. The
heart of the chip is its execution unit. They perform various operations
and send results back to the data cache. The floating-point unit handles
mathematical operations on the largest and smallest numbers. The data cache
ferries the processed information to the bus interface unit, which in turn
sends the results to the RAM. The moment a program is launched, the microprocessor
of the computer loads the program file from the hard disk into RAM. The
moment data is freed and the memory modules are ready to receive fresh
instructions from the processor. The computer tends to slow down when there
are too many applications or windows running simultaneously. The moment
certain programs or windows are closed; memory is freed allowing the system
to function a bit faster. Each byte of data is stored in RAM at a specific
address, where the processor can locate it when it is needed. The processor
writes information into RAM using a unique process called co-operative
multitasking, which allows support for different programs running at the
same time, allocating individual space in memory. When an application is
launched, it communicates with the operating system to set aside a block
of space in RAM for that application’s needs. Within the space allocated
to an application are two areas called ‘Stack’ and ‘Heap’.
The stack and the heap contain tools, application resources, as well as
permanent and temporary file information. The stack and the heap are constantly
expanding and contracting, maintaining a balance between the data that
a file contains, and the applications tools that can be used to modify
it. A memory bus can be likened to a set of wires that is used to carry
memory addresses and data to and from the system RAM, and in most computers,
is also shared with the processor bus, connecting the system memory to
the processor and the system chipset. The memory bus is made up of two
parts, ‘Data Bus’ which carries actual memory data within the
computer and ‘Address Bus’ which is used to select the memory
address that the data will come from or go to based on a read/write operation.
More information can be transmitted simultaneously if the data part of
the bus is wider. The bandwidth of the data bus is a pointer to how much
information can flow through it, and is a function of the bus width in
bits and its speed in MHz. More bandwidth means batter performance, but
this is possible only if the rest of the system can make use of the increased
bandwidth. The memory controller, normally integrated into the chipset,
generates the typical signals that govern the reading and writing of information
to and from the memory, interfacing the memory with the other major parts
of the system. A single module of RAM resembling a compartment with various
sections or cells lined row-wise. When the processor gets instructions
to execute, the instruction may contain the address of some memory, one
particular section in the compartment from which data is to be read. This
address is sent to the RAM controller, which then organises the request
and sends it down the appropriate address lines to the processor's buffer
known as ‘Level One’ which is in-built and ‘Level Two’
cache. A Larger memory module holds more cells and more rows, and thus
performs faster, as it does not have to undergo constant swapping till
all its cells are completely utilised. If many applications are executed
simultaneously, the memory requirement can really add up, even 512 MB to
1 GB but the application can even be run on computers with only 32 MB.
This is possible due to virtual memory managers that swap or temporarily
relocate sections of the RAM, that are not addressed too frequently, onto
the hard disk, so that newer requests are handled by the now freed section
of RAM. The lesser the system RAM, the more swapping, and this brings down
the performance of the system considerably, as reading swapped data from
sectors on the hard disk is much slower than accessing it directly from
RAM.