source: liacs/ca/opdr3/README@ 186

Last change on this file since 186 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 7.3 KB
RevLine 
[2]1#/* Author : Rick van der Zwet
2# * S-number : 0433373
3# * Version : $Id: README.txt 438 2007-12-28 02:53:47Z rick $
4# * Copyright : FreeBSD Licence
5# * Description : Assignment documentation
6# */
7
8= Index =
9* Preface
10* Methodology
11* Design decisions
12* Directory stucture
13* Programs structure
14* Definitions
15* Configurations
16** Memory
17** Cache
18* BUS2 Output
19* Usage / Running
20* Conclusion
21* Recommendationn
22
23
24= Preface =
25Over here you will find the results of assigment 3 -internally also
26called assignment 4- of Computer architicture. The main purpose of the
27assignment where to determine what the bank conflicts and memory
28bandwith where in certain configurations. Cache simulation is done by
29using dinero. To calculate the result several C programs had to be
30written.
31
32= Methodology =
33The only need of the dinero output will be the the BUS2 (-o2) output ,
34no need anything else. As perl, awk, grep and others are not allowed, a
35small custom C program called grep-bus2 is written. Shell calculate.sh
36will determine the correct cache options variables and will call the
37proper compu with the memory configuration.
38
39= Design decisions =
40* As we are working in 'debugging' a standard program I assume every call
41 to the memory will fetch 32 bits (4bytes)
42* No cache will be simulated in dinero using 1 word cache, which might
43 fake results while accessing multiple times the same memory cell
44 (highly unlikely however)
45* Shell script will allow output to set benchmark file
46
47
48= Directory structure =
49Makefile = GNU Make config file
50compu.c = calculate bandwidth and bank conflicts
51common.[ch] = Common functions
52memory_std.[ch] = Standard memory
53memory_bank.[ch] = Bank memory
54memory_dram.[ch] = DRAM memory
55calculate.sh = Shell script to generate results of combinations
56develop.sh = Very simple script to keep running will coding to
57 ensure continues feedback
58data = directory of the traces
59data/lisp.002.din = provided input
60data/spic.002.din = provided input
61docs = Some additional documentation
62docs/dineroIII.txt = man page
63src/dineroIII.tar.gz = dineroIII source
64
65= Programs structure =
66compu.c will be the logic of choosing the correct memory module to use.
67All memory implementations are defined in memory_<type>.[ch]. To avoid double
68coding a 'interface' common.c is defined which includes the common
69functions mainly outputs.
70
71
72= Definitions =
73The bandwidth of a cache/memory-system is the total number of bytes send
74between CPU and cache divided by the number of cycles. We assume here
75that memory activity is the bottleneck for the enire system in other
76words: that the cache is continuously busy processing requests.
77
78A bankconflict is defined as follows:
79
80For normal memory, a bankconflict is a request that is sent to a bank
81that is still busy handling the previous request (either in the access
82phase or in the bus transfer phase). The first memory acces incurs no
83conflict.
84
85In page-mode DRAM we do not use multiple banks, so the above definition
86is not so useful. In the case interpret the following as a bankconflict:
87a request for a page (=column) in which the previous request was not for
88the same page. The first access here also does not incur a conflict.
89
90= Configurations =
91
92== Memory ==
931) standard memory with random access time of 8 clock cycles
942) 4-bank word-interleaved memory with random access time of 8 clock
95 cycles
963) 8-bank word-interleaved memory with random access time of 8 clock
97 cycles
984) page-mode DRAM with a page-size of 64 words, a random access time of
99 8 clock cycles and a 'next access time' of 3 clock cycles.
1005) page-mode DRAM with a page-size of 1024 words, a random access time
101 of 8 clock cycles and a 'next access time' of 2 clock cycles.
102
103
104== Cache ==
105a) no cache, a write buffer of 1 word deep
106b) a 64 KB, unified, direct-mapped, write-through, no write-allocate
107 cache with 4 word blocks and a 1 word write buffer
108c) a 64 KB, unified, direct-mapped, write-back, write-allocate cache
109 with 4 word blocks and a 1 word write buffer
110
111= Assumptions =
112== Given ==
113* All adddresses in this assignment are word-aligned and all
114 data-accesses to the cache are 1 word.
115* Per clock cycl, 1 request for 1 word can be handled, but requests
116 should remain in order.
117* The time for submitting the requests does not have to be taken into
118 consideration
119* If a memory access is requested to the same bank or row of a busy
120 memory part it is implied to be to adifferent address
121* When accessing memory, the same 'checking' cycle will be used as
122 initial memory call cycle
123* DRAM memory will also have RAS time of 1, all memory will have a bus
124 and no need to disticts between all of them
125* Calculating Byte transfer between memory and cache is trivial,
126 number of lines * bytes every line
127* Both read and writes are treaded the same, no optimizations are made
128 to ensure simplicity
129* Code is not build to be optimized, but to be clear instead, which
130 will result in 'dumb' loops
131* With DRAM worst case senario is used, meaning a call to a locked
132* memory adress or diffent page will block for RAS seconds
133
134
135= BUS2 Output =
136BUS2 <type> <size> <adddress> <reference_count> <instruction_count>
137* BUS2 are four literal characters to start bus record access is the access
138* type ( r for a bus-read, w for a bus-write, p for a bus-prefetch, s for
139 snoop activity (output style 3 only).
140* size is the transfer size in bytes
141* address is a hexadecimal byte-address between 0 and ffffffff
142 inclusively
143* reference_count is the number of demand references since the
144 last bus transfer (i.e. cache misses)
145* instruction_count is the number of demand instruction fetches
146 since the last bus transfer
147
148= Usage / Running =
149# Alter calculate.sh to speficy the right dinero binary path
150# Build binaries
151$ make
152# Call calculate.sh with proper argument for datafile
153$ sh calculate.sh <path-to-datafile>
154# Result will be posted to stderr and to the files res-xx.txt
155# Rerun will simplely overwrite all the old data
156
157
158= Conclusion =
159 It really does depend which type of cache and memory to use. A lot of
160 assumptions where made and many generalisations where made. In order
161 to have the systems work better with eachother the system must need to
162 have good kownleage of the underlaying implementation in hardware. It
163 seems that the output traces lisp and spic has been optimized for the
164 use of class C cause and type word memory. It's also pretty clear that
165 without any cause the system will not preform at all and will just
166 suffer from the really slow memory.
167
168
169= Recommendations =
170* As the input is text and only simple calculations are beeing used, allowing
171 to use a interperted like perl, python or else would be pretty handy
172* /usr/local/edu/data does not exists this should be ~csca/edu/data
173* The 'large files' are tar gzipped 100k, 300k ;-)
174* Please specify which version of dinero to use and were the program needs to
175 run on
176* dineroIII does not exists online anymore and has been replaced by dineroIV,
177 compiling also fails for dineroIII on more modern systems, quick and dirty
178 fix patch: http://rickvanderzwet.nl/svn/data/liacs/ca/opdr3/src/
179* Submit does not include an email where to submit to
180* Translate 'Het gaat om' part Assignment
Note: See TracBrowser for help on using the repository browser.