Status – Week 283

Status – Week 248
Victor Moya
Summary
Streamer.
 TraceDriver.
 bGPU
 Signal Traffic Analyzer.
 How to commit code.

Streamer







Added index mode.
Supports out of order memory response.
Supports out of order streaming to the
shaders.
Supports out of order shader output.
Vertexs are sent in order to the Rasterizer.
Implemented a kind of ‘index/vertex reorder
queue’.
Stream mode and index mode use the same
streaming code.
from Memory Controller
Streamer
Index Data Buffer
Index Cache
commit
Output
Input
(vertex index)
Cache
Cache
(vertex attributes)
to Shader
from Shader
to Rasterizer
from Memory Controller
Streamer
Index Data Buffer
next
4
alloc
fifo
4
Vertex
Cache
VRQ
4
Shader”i”
Vertex Fifo
tail
head
Streamer (index mode)


1) Load index data into the index buffer (divided in
two half buffers for ‘pipelining’).
2) If the index cache has a free entry and there are
free input and output cache entries (starvation?) =>


2.1) read new index from index data buffer.
2.2) search index in the output cache =>




2.2.1) uf found and output cache entry free => mark
index/vertex as shaded, reserve the output cache entry for the
index/vertex (references = 1).
2.2.2) uf found output cache entry and references > 0 =>
mark index as shaded, increment reference counter.
2.2.3) if found output cache entry and references == 0 =>
mark index as not shaded, increment reference counter.
2.2.4) if not found => reserve new input and output cache
entries for the index/vertex, mark as not loaded and not
shaded.
Streamer (index mode)
3) If the memory controller is ready and
there are index/vertex not loaded =>
ask for the next attribute of the current
load vertex.
 4) If there are loaded indexes (vertex)
and the shaders can receive new
vertexes => send vertex to the vertex
shader. Issue can be out of order.

Streamer (index mode)
5) If there are new vertex outputs from the
shaders => broadcast to the index cache the
vertex id, mark indexes as shaded, store
vertex output in the reserved entry of the
ouput cache. Can be received out of order.
 6) If the current index/vertex to commit in
the index cache has been already shaded adn
the rasterizer is ready => send to the
rasterizer, decrement output cache entry
reference counter, if references are 0 free
output cache entry, free index cache entry.

Streamer (stream mode)
Use vertex counter (start + current
vertex) as index.
 Uses the same algorithm that index
mode.

TraceDriver
Early implementation.
 Added to the cvs tree.
 To do:





correct some errors.
add vertex program binary code.
integrate with the simulator.
Future work:


add support for vertex arrays, index arrays,
vertexs programs.
support ‘real’ OpenGL traces.
bGPU

Now I can start testing it ...
Signal Traffic Analyzer

Changes to the simulator infraestructure
already discussed (mail):
Agreggate dynamic object and traffic
control functionalities in a single class.
 All data going through the signal class
would use objects derived from that class.
 SignalBinder has the capability to dump the
traffic for a given cycle.

Signal Traffic Analyzer

Visualization program?

Perl? C?
How to commit code
New files and modified files are not sent
zipped using mail to other programmers.
 New files and modified files are commited
using CVS.
 New files and modified files must keep the
code style rules:




Indentation is 4 spaces, not 3 spaces, not a tab.
Newlines use the UNIX format not the Windows
lf/cr format.
DO NOT COMMIT CODE WITHOUT FOLLOWING
THIS RULES.
How to commit code

How to commit code with CVS?







Put the modified/new files in your cvs image
directory.
New files and directories are added using ‘cvs add
filename’.
BEFORE COMMITING ALWAYS DO AN UPDATE:
‘cvs update’ in the cvs source root directoy.
How to resolve update conflicts?
COMMIT: ‘cvs commit’.
Put some comments with what has changed in the
code would be nice.
Send those comments in a commit notice to the
other programmers is also nice.
How to commit code

How to resolve update conflicts?




1) cvs marks in the source the conflict regions and
puts the two code versions.
2) it shouldn’t compile correctly.
3) if it is code you have modified and the conflict
is with the old version -> use your code.
4) if it is code someone else has modified and
committed but you have not touched -> use the
original code.
How to commit code

5) if it is code someone else has modified and
committed and you have also modified ->



a) you know what to do -> do you really know? ->
really-> really really really? -> do it.
b) you don’t know -> ask.
6) you don’t know what to do -> ask.