Coprocessor Control Shell Design: By: Kamran H. Pathan Roll No: 9
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
Hierarchical Control
Control of Internal Pipelining
Control of Linear Pipelines
Control of Nonlinear Pipelines
Control Handshakes for Pipelines
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