0% found this document useful (0 votes)
69 views15 pages

Coprocessor Control Shell Design: By: Kamran H. Pathan Roll No: 9

This document discusses the design of a coprocessor control shell. It describes control shell design as attaching a custom hardware module to a hardware/software interface. There are two aspects to control shell design: data design, which defines how to transfer data between software and hardware, and control design, which defines the software control strategy for the hardware. The outcome of these designs defines the programmer's model that software sees.

Uploaded by

KAMRAN12345786
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
69 views15 pages

Coprocessor Control Shell Design: By: Kamran H. Pathan Roll No: 9

This document discusses the design of a coprocessor control shell. It describes control shell design as attaching a custom hardware module to a hardware/software interface. There are two aspects to control shell design: data design, which defines how to transfer data between software and hardware, and control design, which defines the software control strategy for the hardware. The outcome of these designs defines the programmer's model that software sees.

Uploaded by

KAMRAN12345786
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 15

Coprocessor Control Shell Design

By: Kamran H. Pathan


Roll No: 9

Summary
The design practice of attaching a custom hardware module to a
hardware/software interface, an activity referred to as control
shell design.
It involves the encapsulation of a custom hardware module on a
standard hardware/software interface, and the development of a
software driver to control the custom hardware module through
this hardware/software interface.
There are two orthogonal aspects to control shell design.
The first, data design, defines how to transfer data from software
to custom hardware and back.
The second, control design, defines how to implement a software
control strategy for the custom hardware.
The outcome of data design and control design define the

Data Design
Data Design is the implementation of a mapping between the
control-shell ports and the custom-hardware ports.
Typically, this includes the introduction of buffers and registers, as
well as the creation of an address map.
There two types of Data Design:
Flexible Addressing Mechanisms
Multiplexing and Masking

Flexible Addressing Mechanisms


A data port on a coprocessor has three characteristics.
Word length
A direction
An update rate.

The update rate expresses how frequently a port changes value.


The two extremes are a parameter, which needs to be set only a
single time, and a function argument, which changes value upon
each execution of the hardware module..
When these three characteristics (word length, direction, and

Multiplexing and Masking


There are several occasions when the ports of the hardware
module need to be multiplexed over the ports of the control shell.
There may be insufficient control-shell ports available to
implement a one-to-one mapping between hardware-module ports
and control-shell ports.
Some hardware-module ports need to be programmed only once
(or very infrequently), so that it is inefficient to allocate a separate
control-shell port for these ports.
Multiplexing will increase the control complexity of the control

Multiplexing and Masking


In addition, uncareful multiplexing will reduce the available
input/output bandwidth of the hardware module.
Thus, there is a risk that the module becomes communication
constrained because of the multiplexing process.
Multiplexing can be implemented in different ways.
The first is to use time multiplexing of the hardware module ports.
The second is to introduce an index register in the control shell.

Control Design (I)


Control design in a coprocessor is the collection of activities to
generate control signals and to capture status signals.
The result of control design is a set of commands or instructions
that can be executed by the coprocessor.
These commands are custom-tailored for the design.

Control Design (II)


Figure shows a generic architecture to control a custom
hardware module through software.
It includes a command interpreter which accepts commands
from software and which returns status information.
The command interpreter is the top level controller in the
coprocessor, and it communicates directly with software.
A command is a one-time control operation.
A configuration is a value which will affect the execution of the
coprocessor

Control Design (III)


There are several architectural techniques that can be used to
optimize the performance of the coprocessor. Mentioned as
follows

Hierarchical Control
Control of Internal Pipelining
Control of Linear Pipelines
Control of Nonlinear Pipelines
Control Handshakes for Pipelines

Programmers Model = Control Design +


Data Design
The previous slides highlighted two aspects that affect control
shell design.
Here consider the impact of these design decisions on the
software driver.
The software view of a hardware module is defined as the
programmers model.
This includes a collection of the memory areas used by the
custom hardware module, and a definition of the commands (or
instructions) understood by the module.

Address Map
The address map reflects the organization of software-readable
and software writable storage elements of the hardware module,
as seen from software.
The address map is part of the design of a memory-mapped
coprocessor, and its design should consider the viewpoint of the
software designer rather than the hardware designer.
A given memory-mapped address should always affect the same
hardware registers.
By default all memory-mapped registers should be read/write.

Instruction Set
The instruction set of custom-hardware module defines how
software can control the module.
The design of a good instruction-set is a hard problem; it
requires the code designer to make the proper trade-off between
flexibility and efficiency.
Instructions that trigger complex activities in the hardware
module may be very efficient, but they are difficult to use and
understand for a software designer.
The design of an instruction-set strongly depends on the function

Conclusion
Data design is concerned with moving data from software to the
encapsulated hardware module and back.
Control design is concerned with generating control signals for
the encapsulated hardware module.
In programmers model we consider the impact of these design
decisions on the software driver.

Questions??

Thank You

You might also like