design of 3 stage pipelining processor using vhdl

22
DESIGN OF 3 STAGE PIPELINING PROCESSOR USINGVHDL GUIDED BY: sdm

Upload: sdmdharwad

Post on 17-Oct-2014

136 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: Design of 3 Stage Pipelining Processor Using Vhdl

DESIGN OF 3 STAGE PIPELINING PROCESSOR USINGVHDL

GUIDED BY:

sdm

Page 2: Design of 3 Stage Pipelining Processor Using Vhdl

Agenda:

Page 3: Design of 3 Stage Pipelining Processor Using Vhdl

Introduction of 3 stage pipelining

A pipeline is a set of data processing elements connected in series,

so that the output of one element is the input of the next one.

In most of the cases we create a pipeline by dividing a complex

operation into simpler operations.

we can also say that instead of taking a bulk thing and processing it at once, we break it into smaller pieces and process it one after another.

Page 4: Design of 3 Stage Pipelining Processor Using Vhdl

• A technique used in advanced microprocessors where the microprocessor begins executing a second instruction before the first has been completed.

• Means on applying the concept of pipelining, when an instruction is fetched from memory, the previous instruction must have already decoded.

• A Pipeline is a series of stages, where some work is done at each stage. The work is not finished until it has passed through all stages.

WHAT IS PIPELINING

Page 5: Design of 3 Stage Pipelining Processor Using Vhdl

• The pipeline is divided into segments and each segment can execute it operation concurrently with the other segments.

• Once a segment completes an operations, it passes the result to the next segment in the pipeline and fetches the next operations from the preceding segment.

HOW PIPELINES WORKS

Page 6: Design of 3 Stage Pipelining Processor Using Vhdl
Page 7: Design of 3 Stage Pipelining Processor Using Vhdl

EXAMPLE

Instruction 1 Instruction 2

Instruction 3Instruction 4

X X

XX

Four sample instructions, executed linearly

Page 8: Design of 3 Stage Pipelining Processor Using Vhdl

Four Pipelined Instructions

IF

IF

IF

IF

ID

ID

ID

ID

EX

EX

EX

EX M

M

M

M

W

W

W

W

5

1

1

1

Page 9: Design of 3 Stage Pipelining Processor Using Vhdl

INSTRUCTIONS FETCH

• The instruction Fetch (IF) stage is responsible for obtaining the requested instruction from memory. The instruction and the program counter (which is incremented to the next instruction) are stored in the IF/ID pipeline register as temporary storage so that may be used in the next stage at the start of the next clock cycle.

Page 10: Design of 3 Stage Pipelining Processor Using Vhdl

• INSTRUCTION DECODE: The Instruction Decode (ID) stage is responsible for decoding the instruction and sending out the various control lines to the other parts of the processor. The instruction is sent to the control unit where it is decoded and the registers are fetched from the register file.

• EXECUTION: The Execution (EX) stage is where any calculations are performed. The main component in this stage is the ALU. The ALU is made up of arithmetic, logic and capabilities.

Page 11: Design of 3 Stage Pipelining Processor Using Vhdl

• MEMORY I/O :The Memory and IO (MEM) stage is responsible for storing and loading values to and from memory. It also responsible for input or output from the processor. If the current instruction is not of Memory or IO type than the result from the ALU is passed through to the write back stage.

• WRITE BACK : The Write Back (WB) stage is responsible for writing the result of a calculation, memory access or input into the register file.

Page 12: Design of 3 Stage Pipelining Processor Using Vhdl

OPERATION TIMINGS

• Estimated timings for each of the stages:

Instruction Fetch

2ns

Instruction Decode

1ns

Execution 2ns

Memory and IO

2ns

Write Back

1ns

Page 13: Design of 3 Stage Pipelining Processor Using Vhdl

ADVANTAGES/DISADVANTAGES

Advantages: • More efficient use of processor• Quicker time of execution of large number of instructions

Disadvantages:• Pipelining involves adding hardware to the chip• Inability to continuously run the pipeline at full speed because of pipeline hazards which disrupt the smooth execution of the pipeline.

Page 14: Design of 3 Stage Pipelining Processor Using Vhdl

PIPELINE HAZARDS

• Data Hazards – an instruction uses the result of the previous instruction.

• A hazard occurs exactly when an instruction tries to read a register in its ID stage that an earlier instruction intends to write in its WB stage.

• Control Hazards – the location of an instruction depends on previous instruction

• Structural Hazards – two instructions need to access the same resource

Page 15: Design of 3 Stage Pipelining Processor Using Vhdl

DATA HAZARDS

IF

IF

ID

ID EX

EX M

M

WB

WB

ADD R1, R2, R3

SUB R4, R1, R5

Select R2 and R3 for ALU Operations

ADD R2 and R3 STORE SUM IN R1

Select R1 and R5 for ALU Operations

Page 16: Design of 3 Stage Pipelining Processor Using Vhdl

TYPE OF PIPELINING

• SOFTWARE PIPELINING 1) CAN HANDLE COMPLEX INSTRUCTIONS 2) ALLOWS PROGRAMS TO BE REUSED

• HARDWARE PIPELINING 1) HELP DESIGNER MANAGE COMPLEXITY – A COMPLEX TASK CAN BE DIVIDED INTO SMALLER, MORE MANAGEABLE PIECES. 2) HARDWARE PIPELINING OFFERS HIGHER PERFORMANCE

Page 17: Design of 3 Stage Pipelining Processor Using Vhdl

TYPE OF HARDWARE PIPELINES

• Instruction Pipeline - An instruction pipeline is very similar to a manufacturing assembly line.

1st stage receives some parts, performs its assembly task, and passes the results to the second stage;

2nd stage takes the partially assembled product from the first stage, performs its task, and passes its work to the third stage;

3rd stage does its work, passing the results to the last stage, which completes the task and outputs its results.

• Data Pipeline – data pipeline is designed to pass data from stage to stage.

Page 18: Design of 3 Stage Pipelining Processor Using Vhdl

INSTRUCTION PIPELINES CONFLICT

• It divided into two categories.– Data Conflicts– Branch Conflicts

• When the current instruction changes a register that the next one needed, data conflicts happens.

• When the current instruction make a jump, branch conflicts happens.

Page 19: Design of 3 Stage Pipelining Processor Using Vhdl

---------------------------------PROGRAM-------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;

entity ALU is Port ( A : in STD_LOGIC_VECTOR (4 downto 0); S : in STD_LOGIC_VECTOR (2 downto 0); C0 : out STD_LOGIC_VECTOR (4 downto 0); B : in STD_LOGIC_VECTOR (4 downto 0));end ALU;

architecture Behavioral of ALU is

begin process( a, b ,s) begin if s="000" then

Page 20: Design of 3 Stage Pipelining Processor Using Vhdl

c0<=a or b; elsif s="001" then c0<= a and b; elsif s="010" then c0<= a nand b;elsif s="011" then c0<= a nor b; elsif s="100" then c0<= a xor b; elsif s="101" then c0<= a xnor b; elsif s="110" then c0<= not b; else c0<=not a; end if; end process;

end Behavioral;

Page 22: Design of 3 Stage Pipelining Processor Using Vhdl

• THANK YOU