Formal Processor Verification

Download Report

Transcript Formal Processor Verification

Processor Architecture
Architecture (I)
Goal
Understand basic computer organization

Instruction set architecture
Deeply explore the CPU working mechanism

How the instruction is executed: sequential and pipeline
version
Help you programming

–2–
Fully understand how computer is organized and works will
help you write more stable and efficient code.
Processor
CPU Design (Why?)
It is interesting.
Aid in understanding how the overall computer system
works.
Many design hardware systems containing processors.
Maybe you will work on a processor design.
–3–
Processor
CPU Design
Instruction set architecture
Logic design
Sequential implementation
Pipelining and initial pipelined implementation
Making the pipeline work
Modern processor design
–4–
Processor
Suggested Reading
- Chap 4.1, 4.2
–5–
Processor
Instruction Set Architecture #1
What is it ?

Assemble Language Abstraction

Machine Language Abstraction
Instruction Set
Architecture (ISA)
What does it provide?

An abstraction of the real computer, hide the details of
implementation
 The syntax of computer instructions
 The semantics of instructions
 The execution model
 Programmer-visible computer status
–6–
Processor
Instruction Set Architecture #2
Assembly Language View

Processor state
 Registers, memory, …

Instructions
 addl, movl, leal, …
 How instructions are encoded as
bytes
Layer of Abstraction

Above: how to program machine
 Processor executes instructions
in a sequence

Below: what needs to be built
Application
Program
Compiler
OS
ISA
CPU
Design
Circuit
Design
Chip
Layout
 Use tricks to make it run fast
 E.g., execute multiple
–7–
instructions simultaneously
Processor
Instruction Set Architecture #3
ISA define the processor family

Two main kind: RISC and CISC
 RISC:SPARC, MIPS, PowerPC
 CISC:X86 (or called IA32)

Another divide: Superscalar, VLIW and EPIC
 Superscalar: all the above
 VLIW: Philips TriMedia
superscalar:[计算机]超标量体系结构
 EPIC: IA64
Under same ISA, there are many different processors

From different manufacturers:
 X86 from Intel and AMD and VIA

Different models
 8086, 80386, Pentium, Pentium 4
–8–
Processor
Y86 Processor State
Program
registers
%eax
%esi
%ecx
%edi
%edx
%esp
%ebx
%ebp

P258 Figure 4.1
Condition
codes
Memory
OF ZF SF
PC
Program Registers
 Same 8 as with IA32. Each 32 bits

Condition Codes
 Single-bit flags set by arithmetic or logical instructions
» OF: Overflow

ZF: Zero
SF:Negative
Program Counter
 Indicates address of instruction

Memory
 Byte-addressable storage array
 Words stored in little-endian byte order
–9–
Processor
Y86 Instructions
P259 Figure 4.2
Format (P259)

1--6 bytes of information read from memory
 Can determine instruction length from first byte
 Not as many instruction types, and simpler encoding than with
IA32

Each accesses and modifies some part(s) of the program state
Errata: JXX and call are 5 bytes long.
– 10 –
Processor
Encoding Registers
P261 Figure 4.4
Each register has 4-bit ID
%eax
%ecx
%edx
%ebx

0
1
2
3
%esi
%edi
%esp
%ebp
6
7
4
5
Same encoding as in IA32, but IA32 using only 3-bit ID
Register ID 8 indicates “no register”

– 11 –
Will use this in our hardware design in multiple places
Processor
Instruction Example
P261 Figure 4.3
Addition Instruction
Generic Form
Encoded Representation
addl rA, rB

6 0 rA rB
Add value in register rA to that in register rB
 Store result in register rB
 Note that Y86 only allows addition to be applied to register data

Set condition codes based on result
e.g., addl %eax,%esi Encoding: 60 06

Two-byte encoding

 First indicates instruction type
– 12 –
 Second gives source and destination registers
Processor
Arithmetic and Logical Operations
Instruction Code
Add
addl rA, rB
Function Code
6 0 rA rB

Refer to generically as “OPl”

Encodings differ only by
“function code”
 Low-order 4 bytes in first
Subtract (rA from rB)
subl rA, rB
6 1 rA rB
And
andl rA, rB
instruction word


6 2 rA rB
Set condition codes as side
effect
Notice: no multiply or divide
operation
Exclusive-Or
xorl rA, rB
– 13 –
6 3 rA rB
Processor
Move Operations
rrmovl rA, rB
P259 Figure 4.2
Register --> Register
2 0 rA rB
3 0 8 rB
V
rmmovl rA, D(rB) 4 0 rA rB
D
5 0 rA rB
D
irmovl V, rB
mrmovl D(rB), rA
Register --> Memory
Memory --> Register

Like the IA32 movl instruction

Simpler format for memory addresses
Give different names to keep them distinct

– 14 –
Immediate --> Register
Distinct: 清楚的
Processor
Move Instruction Examples
IA32
Y86
Encoding
movl $0xabcd, %edx
irmovl $0xabcd, %edx
30 82 cd ab 00 00
movl %esp, %ebx
rrmovl %esp, %ebx
20 43
movl -12(%ebp),%ecx
mrmovl -12(%ebp),%ecx
50 15 f4 ff ff ff
movl %esi,0x41c(%esp)
rmmovl %esi,0x41c(%esp)
40 64 1c 04 00 00
movl $0xabcd, (%eax)
—
movl %eax, 12(%eax,%edx)
—
movl (%ebp,%eax,4),%ecx
—
– 15 –
Processor
Jump Instructions
P259 Figure 4.2
Jump Unconditionally
jmp Dest
7 0
Dest
Jump When Less or Equal
jle Dest
7 1
7 2
7 3
7 4
Encodings differ only by
“function code”
Based on values of condition
codes
Dest

Dest
Jump When Not Equal
jne Dest


Jump When Equal
je Dest
Refer to generically as “jXX”
Dest
Jump When Less
jl Dest

Dest

Same as IA32 counterparts
Encode full destination
address
 Unlike PC-relative
addressing seen in IA32
Jump When Greater or Equal
jge Dest
7 5
Dest
Jump When Greater
jg Dest
– 16 –
7 6
Dest
Processor
Y86 Program Stack
Stack “Bottom”
Region of memory holding
program data

Used in Y86 (and IA32) for
supporting procedure calls
Stack top indicated by %esp

•
Increasing
Addresses

 Address of top stack element
•

•
Stack grows toward lower
addresses
 Top element is at lowest address
%esp
Stack “Top”
– 17 –
in the stack
 When pushing, must first
decrement stack pointer
 When popping, increment stack
pointer
Processor
Stack Operations
pushl rA
a 0 rA 8

Decrement %esp by 4

Store word from rA to memory at %esp

Like IA32
popl rA
– 18 –
P259 Figure 4.2
b 0 rA 8

Read word from memory at %esp


Save in rA
Increment %esp by 4

Like IA32
Processor
Subroutine Call and Return
call Dest
Dest

Push address of next instruction onto stack

Start executing instructions at Dest
Like IA32

ret
9 0

Pop value from stack

Use as address for next instruction
Like IA32

– 19 –
8 0
P259 Figure 4.2
Processor
Miscellaneous Instructions
0 0
nop

Don’t do anything
halt
1 0

Stop executing instructions

IA32 has comparable instruction, but can’t execute it in
user mode
We will use it to stop the simulator

– 20 –
P259 Figure 4.2
Processor
Y86 Program Structure
irmovl Stack,%esp
rrmovl %esp,%ebp
irmovl List,%edx
pushl %edx
call len2
halt
.align 4
List:
.long 5043
.long 6125
.long 7395
.long 0
# Set up stack
# Set up frame
# Push argument
# Call Function
# Halt

Program starts at
address 0

Must set up stack
 Make sure don’t
overwrite code!
# List of elements


Must initialize data
Can use symbolic
names
# Function
len2:
. . .
# Allocate space for stack
.pos 0x100
– 21 –
Stack:
Processor
Assembling Y86 Program
unix> yas eg.ys

Generates “object code” file eg.yo
 Actually looks like disassembler output
0x000:
stack
0x006:
0x008:
0x00e:
argument
0x010:
Function
0x015:
0x018:
0x018:
0x018:
0x01c:
0x020:
0x024:
– 22 –
308400010000 |
irmovl Stack,%esp
2045
|
308218000000 |
a028
|
rrmovl %esp,%ebp # Set up frame
irmovl List,%edx
pushl %edx
# Push
8028000000
|
call len2
10
|
halt
| .align 4
| List:
|
.long
|
.long
|
.long
|
.long
b3130000
ed170000
e31c0000
00000000
# Set up
# Call
# Halt
# List of elements
5043
6125
7395
0
Processor
Simulating Y86 Program
unix> yis eg.yo

Instruction set simulator
 Computes effect of each instruction on processor state
 Prints changes in state from original
Stopped in 41 steps at
Changes to registers:
%eax:
%ecx:
%edx:
%esp:
%ebp:
%esi:
Changes to memory:
0x00f4:
0x00f8:
0x00fc:
– 23 –
PC = 0x16.
Exception 'HLT', CC Z=1 S=0 O=0
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000003
0x00000003
0x00000028
0x000000fc
0x00000100
0x00000004
0x00000000
0x00000000
0x00000000
0x00000100
0x00000015
0x00000018
Processor
Summary
Y86 Instruction Set Architecture

Similar state and instructions as IA32

Simpler encodings
Somewhere between CISC and RISC

How Important is ISA Design?

Less now than before
 With enough hardware, can make almost anything go fast

Intel is moving away from IA32
 Does not allow enough parallel execution
 Introduced IA64
» 64-bit word sizes (overcome address space limitations)
» Radically different style of instruction set with explicit parallelism
» Requires sophisticated compilers
– 24 –
Radically: 根本上
Processor
Logic Design
Digital circuit

What is digital circuit?

Know what a CPU will base on?
Hardware Control Language (HCL)


– 25 –
A simple and functional language to describe our CPU
implementation
Syntax like C
Processor
Category of Circuit
Analog Circuit

Use all the range of Signal

Most part is amplifier
Hard to model and automatic design



Use transistor and capacitance as basis
We will not discuss it here
Amplifier: 放大器
Transistor:晶体管
Capacitance: 电容
Digital Circuit

Has only two values, 0 and 1

Easy to model and design
Use true table and other tools to analyze



– 26 –
Use gate as the basis
The voltage of 1 is differ in different kind circuit.
 E.g. TTL circuit using 5 voltage as 1
Processor
Digital Signals
0
1
0
Voltage
Time

Use voltage thresholds to extract discrete values from
continuous signal

Simplest version: 1-bit signal
 Either high range (1) or low range (0)
 With guard range between them

Not strongly affected by noise or low quality circuit elements
 Can make circuits simple, small, and fast
– 27 –
Processor
Overview of Logic Design
Fundamental Hardware Requirements

Communication
 How to get values from one place to another



Computation
Storage (Memory)
Clock Signal
Bits are Our Friends


Everything expressed in terms of values 0 and 1
Communication
 Low or high voltage on wire

Computation
 Compute Boolean functions


– 28 –
Storage
Clock Signal
Processor
Category of Digital Circuit
Combinational Circuit

Without memory. So the circuit can’t have state. Any same
input will get the same output at any time.

Needn’t clock signal
Typical application: ALU

Sequential Circuit
– 29 –

= Combinational circuit + memory and clock signal


Have state. Two same inputs may not generate the same
output.
Use clock signal to control the run of circuit.

Typical application: CPU
Processor
Computing with Logic Gates
And
a
b
Or
out
out = a && b



P272 Figure 4.8
a
b
Not
out
out = a || b
a
out
out = !a
Outputs are Boolean functions of inputs
Not an assignment operation, just give the circuit a name
Respond continuously to changes in inputs
 With some, small delay
Rising Delay
Falling Delay
a && b
b
Voltage
a
– 30 –
Time
Processor
Combinational Circuits
Acyclic Network
Inputs
Outputs
Acyclic Network of Logic Gates
– 31 –

Continuously responds to changes on inputs

Outputs become (after some delay) Boolean functions of
inputs
Processor
Bit Equality
a
P272 Figure 4.9
Bit equal
HCL Expression
eq
bool eq = (a&&b)||(!a&&!b)
b

Generate 1 if a and b are equal
Hardware Control Language (HCL)

Very simple hardware description language
 Boolean operations have syntax similar to C logical operations

– 32 –
We’ll use it to describe control logic for processors
Processor
Bit-Level Multiplexor
s
Bit MUX
P273 Figure 4.10
HCL Expression
bool out = (s&&a)||(!s&&b)
b
out
a

Control signal s

Data signals a and b
Output a when s=1, b when s=0



– 33 –
Its name: MUX
Usage: Select one signal from a couple of signals
Processor
Word Equality
P274 Figure 4.11
Word-Level Representation
b31
a31
b30
Bit equal
Bit equal
eq31
B
=
A
eq30
a30
HCL Representation
Eq
b1
a1
b0
a0
– 34 –
Eq
Bit equal
Bit equal
bool Eq = (A == B)
eq1
eq0

32-bit word size

HCL representation
 Equality operation
 Generates Boolean value
Processor
Word Multiplexor
P275 Figure 4.12
Word-Level Representation
s
s
b31
B
out31
a31
b30
a0
– 35 –
Out
A
HCL Representation
int Out = [
s : A;
1 : B;
];
out30
a30
b0
MUX

Select input word A or B
depending on control signal s

HCL representation
 Case expression
out0
 Series of test : value pairs
 Output value for first successful
test
Processor
HCL Word-Level Examples
P277, P276
Minimum of 3 Words
C
B
A
MIN3
Min3
int Min3 = [
A < B && A < C : A;
B < A && B < C : B;
1
: C;
];


Find minimum of three
input words
HCL case expression

Final case guarantees
match

Select one of 4 inputs
based on two control
bits
HCL case expression
4-Way Multiplexor
s1
s0
D0
D1
D2
D3
– 36 –
MUX4
Out4
int Out4 = [
!s1&&!s0: D0;
!s1
: D1;
!s0
: D2;
1
: D3;
];


Simplify tests by
assuming sequential
matching
Processor
Arithmetic Logic Unit
0
Y
A
X
B

A
L
U
P278 Figure 4.13
1
Y
A
X+Y
OF
ZF
SF
X
A
L
U
B
2
Y
A
X-Y
OF
ZF
SF
X
B
3
Y
A
L
U
A
X&Y
OF
ZF
SF
X
B
A
L
U
X^Y
OF
ZF
SF
Combinational logic
 Continuously responding to inputs

Control signal selects function computed
 Corresponding to 4 arithmetic/logical operations in Y86


– 37 –
Also computes values for condition codes
We will use it as a basic component for our CPU
Processor
Storage
Registers

Hold single words or bits

Loaded as clock rises
Not only program registers

I
Random-access memories

Hold multiple words

E.g. register file, memory
Possible multiple read or write ports



– 38 –
O
Clock
Read word when address input changes
Write word as clock rises
Processor
Register Operation
P279 Figure 4.14
State = x
Input = y
Output = x
x
State = y

Rising
clock

Output = y
y

Stores data bits

For most of time acts as barrier between input and output
As clock rises, loads input

Barrier: 屏障
– 39 –
Processor
State Machine Example
Comb. Logic
0
A
L
U
0
Out
MUX
In
1
Load

Accumulator
circuit

Load or
accumulate on
each cycle
Clock
Clock
Load
In
Out
– 40 –
x0
x1
x0
x0+x1
x2
x0+x1+x2
x3
x4
x3
x3+x4
x5
x3+x4+x5
Processor
Random-Access Memory
P280
valA
srcA
A
valW
Register
file
Read ports
valB
srcB
W
dstW
Write port
B
Clock

Stores multiple words of memory
 Address input specifies which word to read or write

Register file
 Holds values of program registers
 %eax, %esp, etc.
 Register identifier serves as address
» ID 8 implies no read or write performed

Multiple Ports
 Can read and/or write multiple words in one cycle
– 41 –
» Each has separate address and data input/output
Processor
Register File Timing
Reading
valA
srcA
x
A

Register
file
valB
srcB
x
2

B
 After some delay
2
Writing
2

Like register

Update only as clock rises
x
valW
Register
file
W
Clock
– 42 –
Like combinational logic
Output data generated based on
input address
dstW
y
2

Rising
clock
2

y
valW
Register
file
W
dstW
Clock
Processor
Hardware Control Language

Very simple hardware description language

Can only express limited aspects of hardware operation
 Parts we want to explore and modify
Data Types

bool: Boolean
 a, b, c, …

int: words
 A, B, C, …
 Does not specify word size---bytes, 32-bit words, …
Statements
– 43 –

bool a = bool-expr ;

int A = int-expr ;
Processor
HCL Operations

Classify by type of value returned
Boolean Expressions

Logic Operations
 a && b, a || b, !a

Word Comparisons
 A == B, A != B, A < B, A <= B, A >= B, A > B

Set Membership
 A in { B, C, D }
» Same as A == B || A == C || A == D
Word Expressions

Case expressions
 [ a : A; b : B; c : C ]
 Evaluate test expressions a, b, c, … in sequence
– 44 –
 Return word expression A, B, C, … for first successful test Processor
Summary
Computation

Performed by combinational logic

Computes Boolean functions
Continuously reacts to input changes

Storage

Registers
 Hold single words
 Loaded as clock rises

Random-access memories
 Hold multiple words
 Possible multiple read or write ports
 Read word when address input changes
 Write word as clock rises
– 45 –
Processor