Memory Structure
3D1 / Microprocessor Systems I
Memory and Data
Memory is implemented as an array of electronic
switches
Each switch can be in one of two states
0 or 1, on or off, true or false, purple or gold,
sitting or standing
BInary digiTs (bits) are the fundamental unit of data storage
in a computer
Accessing each bit individually isnt very useful
We want to store data that can take a wider range of values
o the value 214
o the letter b
o
Memory Structure
3D1 / Microprocessor Systems I
Memory and Data
By grouping bits together we can
store more values
8 bits = 1 byte
16 bits = 2 bytes = 1 halfword
32 bits = 4 bytes = 1 word
When we refer to memory
locations by address (using the
ARM7), we can only do so in units
of bytes, halfwords or words
the byte at address 21000
the halfword at address 21000
the word at address 21000
8 bits
1 byte
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014
97
23
49
252
0
4
85
240
49
252
0
8
85
251
78
64
44
Memory
2
Larger Units of Information Storage
3D1 / Microprocessor Systems I
Memory and Data
Larger units of information storage
1 kilobyte (kB) = 210 bytes = 1,024 bytes
1 megabyte (MB) = 1,024 KB = 220 bytes = 1,048,576 bytes
1 gigabyte (GB) = 1,024 MB = 230 bytes = ...
The following units of groups of bits are also used,
usually when expressing data rates:
1 kilobit (kb) = 1,000 bits
1 megabit (Mb) = 1,000 kilobits = 1,000,000 bits
IEC prefixes, KiB, MiB, GiB, ...
3
Numeral Systems
3D1 / Microprocessor Systems I
Memory and Data
We use the decimal (base-10) numeral system most
frequently
We have symbols (digits) that can represent ten integer
values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
We represent integer values larger than 9 with combinations
of two or more digits, e.g.: 10, 11, 12, ..., 112, ..., 247
e.g.: 247
o = (7 x 100) + (4 x 101) + (2 x 102)
o 2 is the Most Significant Digit
o 7 is the Least Significant Digit
Given n decimal digits, how many different integer values can
we represent?
o [0 ... (10n - 1)]
o e.g., n = 3 allows us to represent values in the range [0 ... 999]
4
Binary Numeral System (Base-2)
3D1 / Microprocessor Systems I
Memory and Data
Computer systems store information electronically
using bits (binary digits)
Each bit can be in one of two states, which we can take to
represent the binary (base-2) digits 0 and 1
The binary number system is a natural number system for
computing (rather than the decimal system)
Using a single bit, we can represent integer values 0 and 1
Using two bits, we can represent 0, 1, 10, 11
o i.e. four different values
How many unique values can we represent with, for example,
eight bits?
o [0 ... 11111111] in binary notation
o [0 ... (28 - 1)] = [0 ... 255] in decimal notation
o 256 unique values
Base Subscript Notation
3D1 / Microprocessor Systems I
Memory and Data
There are 102 types of people in the world: those
who understand binary and those who dont ...
The same sequence of symbols can have a different
meaning depending on the base being used
We can use the subscript notation to make it clear which base
we are using
1210 = 11002
110 = 12
Using binary all the time would become quite tedious
The 3D1 exam is worth 10100002% of the final mark
3D1 / Microprocessor Systems I
Memory and Data
Binary to Decimal Conversion
Convert %100101 to its decimal equivalent
100101 =
(1 x 20) +
(0 x 21) +
(1 x 22) +
(0 x 23) +
(0 x 24) +
(1 x 25) +
= 37
3D1 / Microprocessor Systems I
Memory and Data
Decimal to Binary Conversion
Convert 37 to its binary equivalent?
Quotient
Remainder
Binary digit
37 / 2 =
18
18 / 2 =
9/2=
4/2=
2/2=
1/2=
Hexadecimal Numeral System (Base 16)
3D1 / Microprocessor Systems I
Memory and Data
Base-16 (hexadecimal) is a more convenient number
system for computer scientists:
With binary, we needed 2 symbols (0 and 1)
With decimal, we needed 10 symbols (0, 1, ..., 9)
With hexadecimal, we need 16 symbols
Use the same ten symbols as the decimal system for the first
ten hexadecimal digits
Borrow the first six symbols from the alphabet for the last
six symbols
,
0, 1,
3, ,
4, 5,,6,,
7, ,
8, 9,,A,,
B, ,
C, D,,E,,
F , , ,
,2,,
Why is hexadecimal useful?
16 is a power of 2 (24), so exactly one hex digit can
represent the same sixteen possible values as four bits
9
3D1 / Microprocessor Systems I
Memory and Data
Decimal, Binary and Hexadecimal
base-10
base-2
base-16
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
10
1010
11
1011
12
1100
13
1101
14
1110
15
1111
10
3D1 / Microprocessor Systems I
Memory and Data
Converting Between Binary and Hex
One hexadecimal digit represents the same number of
values as four binary digits
conversion between hex and binary is trivial
the hexadecimal notation a convenient one for us
0 0 1 0
0 1 0 1
or 0x25
1 0 1 0
0 1 1 1
or 0xA7
Hexadecimal is used by convention when referring to
memory addresses: e.g. address 0x1000, address
0x4002
0x denotes a
hexadecimal value
11
Alternative Base Notation
3D1 / Microprocessor Systems I
Memory and Data
Without a fancy word processor, we wont be able to
use the subscript notation to represent different bases
How would we tell a computer whether we mean 10 or 10?
Instead we can prefix values with symbols that provide
additional information about the base
In ARM assembly language (which we will be using) we
use the following notation:
1000
0x1000
&1000
2_1000
n_1000
No prefix usually means decimal
Hexadecimal, used frequently
Alternative hexadecimal notation
Binary
Base n
12
Representing Text
3D1 / Microprocessor Systems I
Memory and Data
So far, we have only considered how computers store
integer values using binary digits
What about representing other information, for
example text composed of alphanumeric symbols?
T, h, e, , q, u, i, c, k, , b, r, o, w, n, , f, o, x, ...
Were still restricted to storing binary digits (bits) in
memory
To store alphanumeric symbols or characters, we can
assign each character a value which can be stored in
binary form in memory
13
3D1 / Microprocessor Systems I
Memory and Data
ASCII
American Standard Code for Information Interchange
ASCII is a standard used to encode alphanumeric and
other characters associated with text
e.g. representing the word hello using ASCII
H
$48
$45
$4C
$4C
$4F
Each character is stored in a single byte value (8 bits)
1 byte = 8 bits means we can have a possible 256 characters
In fact, ASCII only uses 7 bits, giving 128 possible characters
Only 96 of the ASCII characters are printable
Remaining values are control codes examples??
14
3D1 / Microprocessor Systems I
Memory and Data
ASCII
0
NUL
DLE
SPACE
SOH
DC1
STX
DC2
ETX
DC3
EOT
DC4
ENQ
NAK
ACK
SYN
&
BEL
ETB
BS
CAN
HT
EM
LF
SUB
VT
ESC
FF
FS
<
CR
GS
SO
RS
>
SI
US
DEL
15
ASCII
3D1 / Microprocessor Systems I
Memory and Data
Some things to note about ASCII
The value 0 is not the name as the character 0
Similarly, the value 1 is not the same as the character 1, ...
The characters 0, 1, ... are used in text to display values in
human readable form
Upper and lower case characters have different codes
The first printable character is the space symbol, and it
has code 3210
ASCII is a base-128 number system and each value has a
different symbol
It is more efficient to store a value in its value form than its
text form (i.e. Store the value 1010 instead of the ASCII
symbols 1 followed by 0.)
16
Types of Memory
3D1 / Microprocessor Systems I
Memory and Data
Random Access Memory (RAM)
The CPU can both read and modify the contents of memory
Volatile (information lost when power is turned off)
Non-volatile (information retained when power is turned off)
Read Only Memory (ROM)
CPU can only read the contents of memory
Non-volatile
Further classified by ability to change contents
o Programmable ROM (PROM): Can only write contents once
o Erasable Programmable ROM (EPROM): Can erase contents using
ultra-violet light and re-write
o Electronically Erasable Programmable ROM (EEPROM): Can erase
contents electronically (including Flash Memory)
17