Mercurial > hg > Game > Cerium
annotate TaskManager/Cell/spe/CellDmaManager.cc @ 1417:70f461442b0f draft
null DMA clean up
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 19 Feb 2012 21:01:06 +0900 |
parents | 2187bd10f16d |
children | ff721740df6b |
rev | line source |
---|---|
1142
801d57ae1e29
cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents:
1125
diff
changeset
|
1 //#include <stdio.h> |
88 | 2 #include <stdlib.h> |
59 | 3 #include "CellDmaManager.h" |
736 | 4 #include "Scheduler.h" |
672 | 5 |
6 | |
1001 | 7 unsigned long long alloc_flag = 0; |
1009 | 8 |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
9 /** |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
10 * DMA Load |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
11 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
12 * @param[in] buf Buffer of Load Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
13 * @param[in] addr Address of Load Data at Main Memory |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
14 * @param[in] size Size of Load Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
15 * @param[in] mask DMA tag |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
16 */ |
1417 | 17 void *CellDmaManager::dma_load(Scheduler *s, memaddr addr, uint32 size, uint32 mask) |
59 | 18 { |
1417 | 19 void *buf = 0; |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
20 if (size == 0) return buf; |
1417 | 21 buf = s->manager->allocate(size); |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
22 mfc_get((volatile void *)buf, addr, size, mask, 0, 0); |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
23 return buf; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
24 } |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
25 |
1417 | 26 void *CellDmaManager::dma_load1(void *buf, memaddr addr, uint32 size, uint32 mask) |
27 { | |
28 if (size == 0) return buf; | |
29 mfc_get((volatile void *)buf, addr, size, mask, 0, 0); | |
30 return buf; | |
31 } | |
32 | |
33 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
34 void * |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
35 CellDmaManager::get_writebuf(Scheduler *s,memaddr addr, uint32 size) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
36 { |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
37 void *b = s->manager->allocate(size); |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
38 return b; |
59 | 39 } |
40 | |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
41 /** |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
42 * DMA Store |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
43 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
44 * @param[in] buf Buffer of Store Data at SPE |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
45 * @param[in] addr Address of Store Data at Main Memory |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
46 * @param[in] size Size of Store Data |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
47 * @param[in] mask DMA tag |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
48 */ |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
49 void* CellDmaManager::dma_store(Scheduler *s,void *buf, memaddr addr, uint32 size, uint32 mask) |
59 | 50 { |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
51 if (size == 0) return buf; |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
52 mfc_put((volatile void *)buf, addr, size, mask, 0, 0); |
1417 | 53 return buf; |
59 | 54 } |
55 | |
672 | 56 void CellDmaManager::dma_wait(uint32 mask) |
57 { | |
58 (this->*start_dmawait_profile)(); | |
59 mfc_write_tag_mask(1 << mask); | |
60 mfc_write_tag_update_all(); | |
61 mfc_read_tag_status(); | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
62 __asm__ __volatile__(" sync"); |
675 | 63 (this->*end_dmawait_profile)(&global_wait_time); |
672 | 64 } |
65 | |
1401 | 66 #ifndef MAIL_QUEUE |
67 | |
672 | 68 void CellDmaManager::mail_write(memaddr data) |
69 { | |
70 (this->*start_dmawait_profile)(); | |
71 spu_write_out_mbox((uint32)data); | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
72 #if 0 |
672 | 73 if (ABIBIT>32) { |
74 unsigned long data0 = (unsigned long)data; | |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
75 spu_write_out_mbox((uint32)(data0>>32)); |
672 | 76 } |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
77 #endif |
675 | 78 (this->*end_dmawait_profile)(&global_mail_time); |
672 | 79 } |
1401 | 80 #else |
672 | 81 |
1007 | 82 // mail を queue にしたみた。mailの書き出しの待ちあるのかわからないけど |
83 //TASK_LIST_MAIL は仕事が最後に溜まってしまうけど、MailQueueなら出来る時にmailを書き出す | |
84 //ので多少は効果あるといいな。 | |
1401 | 85 void CellDmaManager::mail_write(memaddr data) |
1007 | 86 { |
1124 | 87 unsigned long long wait = 0; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
88 |
1009 | 89 if (0 != spu_readchcnt(SPU_WrOutMbox)) { |
1021 | 90 if (mail_queue->count()) { |
1124 | 91 (this->*start_dmawait_profile)(); |
1007 | 92 spu_write_out_mbox((uint32)data); |
1124 | 93 (this->*end_dmawait_profile)(&wait); |
94 mail_write_time += wait; | |
95 global_wait_time += wait; | |
1007 | 96 } else { |
1021 | 97 |
98 //mail_queue から poll する | |
1124 | 99 (this->*start_dmawait_profile)(); |
1021 | 100 spu_write_out_mbox((uint32)mail_queue->recv()); |
1124 | 101 (this->*end_dmawait_profile)(&wait); |
102 mail_write_time += wait; | |
103 global_wait_time += wait; | |
1021 | 104 //mail_queue に加える |
105 mail_queue->send(data); | |
106 | |
1007 | 107 } |
108 } else { | |
1021 | 109 |
110 mail_queue->send(data); | |
111 | |
1007 | 112 } |
1124 | 113 |
1007 | 114 } |
1401 | 115 #endif |
1007 | 116 |
1125 | 117 // tasklist がもうない場合に、MailQueue 全部を書き出す |
1007 | 118 void CellDmaManager::mail_write_finish_list(memaddr data) |
119 { | |
120 | |
1417 | 121 unsigned long long wait = 0; |
1007 | 122 |
1021 | 123 while (mail_queue->count()) { |
1124 | 124 (this->*start_dmawait_profile)(); |
125 spu_write_out_mbox((uint32)mail_queue->recv()); | |
126 (this->*end_dmawait_profile)(&wait); | |
1021 | 127 |
1124 | 128 global_mail_time += wait; |
129 finish_mail_write_time += wait; | |
1021 | 130 |
1007 | 131 } |
132 | |
1124 | 133 (this->*start_dmawait_profile)(); |
1007 | 134 spu_write_out_mbox((uint32)data); |
1124 | 135 (this->*end_dmawait_profile)(&wait); |
1007 | 136 |
1124 | 137 global_mail_time += wait; |
138 finish_mail_write_time += wait; | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
139 |
1007 | 140 } |
141 | |
672 | 142 memaddr CellDmaManager::mail_read() |
143 { | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
144 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
145 |
1124 | 146 unsigned long long wait = 0; |
147 | |
672 | 148 (this->*start_dmawait_profile)(); |
149 memaddr data = (memaddr)spu_read_in_mbox(); | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
150 |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
151 #if 0 |
672 | 152 if (ABIBIT>32) { |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
153 data += (spu_read_in_mbox()<<32); |
672 | 154 } |
871
d30617ef4b20
fix get segment dma tag zero problem
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
155 #endif |
1124 | 156 (this->*end_dmawait_profile)(&wait); |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
157 |
1124 | 158 global_mail_time += wait; |
159 mail_read_time += wait; | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
160 |
672 | 161 return data; |
162 } | |
163 | |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
164 memaddr CellDmaManager::task_list_mail_read() |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
165 { |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
166 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
167 unsigned long long wait = 0; |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
168 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
169 (this->*start_dmawait_profile)(); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
170 memaddr data = (memaddr)spu_read_in_mbox(); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
171 (this->*end_dmawait_profile)(&wait); |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
172 |
1123 | 173 |
1124 | 174 task_list_mail_read_time += wait; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
175 global_mail_time += wait; |
1123 | 176 task_list_read_count += 1; |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
177 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
178 return data; |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
179 } |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
180 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
181 |
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
182 |
1417 | 183 void *CellDmaManager::dma_loadList(Scheduler *s, ListDataPtr list, uint32 mask) |
672 | 184 { |
1417 | 185 void *buff = s->manager->allocate(list->size); |
672 | 186 mfc_getl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length, |
187 mask, 0, 0); | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
188 return buff; |
672 | 189 } |
190 | |
191 void CellDmaManager::dma_storeList(ListDataPtr list, void *buff, uint32 mask) | |
192 { | |
193 mfc_putl(buff, 0, list->element, sizeof(mfc_list_element_t)*list->length, | |
194 mask, 0, 0); | |
195 } | |
196 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
197 void * |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
198 CellDmaManager::get_writebuf(Scheduler *s,ListDataPtr addr, uint32 size) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
199 { |
1221
2a4ba6366394
fix CellDmaManager
Daichi TOMA <amothic@cr.ie.u-ryukyu.ac.jp>
parents:
1213
diff
changeset
|
200 void *b = s->manager->allocate(addr->size); |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
201 return b; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
202 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
203 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
204 |
672 | 205 |
206 CellDmaManager::CellDmaManager() | |
207 { | |
1009 | 208 |
1021 | 209 mail_queue = new MailManager(); |
672 | 210 stop_profile(); |
211 } | |
212 void | |
213 CellDmaManager::start_profile() | |
214 { | |
925
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
215 global_busy_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
216 global_mail_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
217 global_wait_time = 0; |
1124 | 218 task_list_mail_read_time = 0; |
219 finish_mail_write_time = 0; | |
1123 | 220 task_list_read_count = 0; |
1124 | 221 |
222 mail_read_time = 0; | |
223 mail_write_time = 0; | |
224 | |
672 | 225 start_dmawait_profile = &CellDmaManager::do_start_dmawait_profile; |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
226 end_dmawait_profile = &CellDmaManager::do_end_dmawait_profile; |
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
227 |
672 | 228 } |
229 | |
230 void | |
231 CellDmaManager::stop_profile() | |
232 { | |
233 start_dmawait_profile = &CellDmaManager::null_start_dmawait_profile; | |
234 end_dmawait_profile = &CellDmaManager::null_end_dmawait_profile; | |
235 } | |
236 | |
59 | 237 /** |
180
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
238 * DMA Wait |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
239 * |
e3b7776b1420
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents:
109
diff
changeset
|
240 * @param[in] mask Tag for Wait DMA process |
59 | 241 */ |
275 | 242 void |
672 | 243 CellDmaManager::do_start_dmawait_profile() |
242 | 244 { |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
245 |
242 | 246 wait_time = spu_readch(SPU_RdDec); |
247 global_busy_time += busy_time - wait_time; | |
1071 | 248 //printf("busy_time = %d, wait_time = %d\n", busy_time, wait_time); |
242 | 249 spu_writech(SPU_WrDec, 0xffffffff); |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
250 |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
251 // Measurement of mainMem_alloc |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
252 mainMemalloc_time += (alloc_busy_time - wait_time)*alloc_flag; |
242 | 253 } |
254 | |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
255 |
275 | 256 void |
676 | 257 CellDmaManager::do_end_dmawait_profile(unsigned long long *counter) |
242 | 258 { |
259 wait_time = spu_readch(SPU_RdDec); | |
1053 | 260 //printf("wait_time = %d", wait_time); |
675 | 261 *counter += 0xffffffff - wait_time; |
242 | 262 busy_time = wait_time; |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
263 |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
264 // Measurement of mainMem_alloc |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
265 alloc_busy_time = wait_time; |
242 | 266 } |
239 | 267 |
672 | 268 void CellDmaManager::null_start_dmawait_profile() {} |
676 | 269 void CellDmaManager::null_end_dmawait_profile(unsigned long long *counter) {} |
672 | 270 |
239 | 271 void |
736 | 272 CellDmaManager::show_dma_wait(Scheduler *s, int cpu) |
255 | 273 { |
274 | |
675 | 275 double r = ((double)global_busy_time)/((double)( |
276 global_busy_time+global_wait_time+global_mail_time | |
676 | 277 ))*100.0; |
924 | 278 |
279 double d = ((double)global_wait_time)/((double)( | |
280 global_busy_time+global_wait_time+global_mail_time | |
281 ))*100.0; | |
282 | |
283 double m = ((double)global_mail_time)/((double)( | |
284 global_busy_time+global_wait_time+global_mail_time | |
285 ))*100.0; | |
286 | |
1124 | 287 double tr = ((double)task_list_mail_read_time)/((double)( |
288 global_busy_time+global_wait_time+global_mail_time | |
289 ))*100.0; | |
290 | |
291 double tw = ((double)finish_mail_write_time)/((double)( | |
292 global_busy_time+global_wait_time+global_mail_time | |
293 ))*100.0; | |
294 | |
295 double mr = ((double)mail_read_time)/((double)( | |
296 global_busy_time+global_wait_time+global_mail_time | |
297 ))*100.0; | |
298 | |
299 double mw = ((double)mail_write_time)/((double)( | |
1025 | 300 global_busy_time+global_wait_time+global_mail_time |
301 ))*100.0; | |
302 | |
303 | |
1124 | 304 s->printf("spu%d:\n busy_time = %lld" |
924 | 305 " wait_time = %lld(%.3g%%), " |
306 " mail_time = %lld(%.3g%%), " | |
1124 | 307 " mail_read_time = %lld(%.3g%%), " |
308 " mail_write_time = %lld(%.3g%%),\n" | |
309 " task_list_mail_read_time = %lld(%.3g%%), " | |
310 " finish_mail_write_time = %lld(%.3g%%) " | |
311 " busy_ratio = %.3g%%, \n" | |
1123 | 312 " task_list_read_count = %d" |
313 " average_tasklist_mail_time = %lld" | |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
314 " mainMem_alloc_time = %lld\n" |
970
1a4849b2acad
change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
925
diff
changeset
|
315 ,cpu, global_busy_time, |
1024
cf0ad93028e9
add task list mail time profile.
yutaka@localhost.localdomain
parents:
1023
diff
changeset
|
316 global_wait_time, d, global_mail_time, m, |
1124 | 317 mail_read_time, mr, |
318 mail_write_time, mw, | |
319 task_list_mail_read_time, tr, | |
320 finish_mail_write_time, tw, | |
321 r, | |
1123 | 322 task_list_read_count, |
1124 | 323 task_list_mail_read_time / task_list_read_count, |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
324 mainMemalloc_time); |
925
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
325 |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
326 global_busy_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
327 global_mail_time = 0; |
292bb8c79cdb
add profile in Redering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
924
diff
changeset
|
328 global_wait_time = 0; |
1124 | 329 |
330 mail_read_time = 0; | |
331 mail_write_time = 0; | |
332 | |
333 task_list_mail_read_time = 0; | |
334 finish_mail_write_time = 0; | |
335 task_list_read_count = 0; | |
336 | |
999
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
337 mainMemalloc_time = 0; |
aed8b3ca5537
Measurement of mainMem_alloc at waiting time. not done.
tkaito
parents:
970
diff
changeset
|
338 alloc_flag = 0; |
255 | 339 } |
340 | |
1213
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
341 uint32 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
342 CellDmaManager::get_tag() |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
343 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
344 static int tag = 16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
345 tag ++; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
346 tag &= 0x0f; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
347 return tag+16; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
348 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
349 |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
350 /** |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
351 * DMA buffer offset in rbuf |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
352 */ |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
353 void |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
354 CellDmaManager::bound(ListData *list) |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
355 { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
356 ListElement *elm = list->element; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
357 int *bound = list->bound; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
358 int offset=0; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
359 for(int i=0;i<list->length;i++) { |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
360 bound[i] = offset; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
361 offset += elm[i].size; |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
362 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
363 } |
a49c02dffe6f
DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1142
diff
changeset
|
364 |
604 | 365 |
366 /* end */ |