annotate TaskManager/Cell/spe/CellDmaManager.cc @ 1401:2187bd10f16d draft

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