annotate paper/io.tex @ 3:05a0e70f5823

add some image files
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Thu, 17 Apr 2014 01:37:37 +0900
parents b15b449619b1
children c030ccbf279a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \section{並列処理向け I/O の設計と実装}
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 \subsection{mmap での実装と問題点}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
4 mmap とは、sys/mman.h に含まれている関数で、ファイルの読み込み等に使用される関数である。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
5 ファイルディスクリプタで指定したファイルを offset から len バイトの範囲を読み込む。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 この時にアドレス addr からメモリを確保するようにする。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
7 prot には、PROT\_READによるページの読み込み、PROT\_WRITEによるページへの書き込みなどを指定でき、
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 flags にはメモリ確保する際のオプションを指定することができる。(表\ref{table:mmap})
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
9
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
10 \begin{tiny}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
11 \begin{table}[ht]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
12 \begin{center}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
13 \label{table:mmap}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
14 \small
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
15 void * mmap(void *addr, size\_t len, int prot, int flags, int fd, off\_t offset);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
17 \begin{tabular}[t]{c|l}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
18 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
19 void *addr & メモリに確保するときの先頭のアドレス\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
20 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
21 size\_t len & メモリを確保するサイズ\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
23 int prot & ファイルモード選択\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
24 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
25 int flags & 確保するときのオプション指定\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
26 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 int fd & 読み込むファイルのファイルディスクリプタ\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29 off\_t offset & ファイル先頭からの読み込み開始位置 \\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
30 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
31 \end{tabular}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
32 \caption{mmap 関数の概要}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
33 \end{center}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
34 \end{table}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
35 \end{tiny}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 mmap でファイルを読み込むタイミングは、mmap 関数が呼ばれたときではなく、mmap した領域に対して何らかのアクセスをしたときに初めてファイルが読み込まれる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
39 図\ref{fig:mmap}では、読み込んだファイルを分割して、それらの領域に何らかの処理を加えるときの図である。これらの処理を Task と呼ぶ。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
40 Task 1 という1個目の Task が実行される。実行されたときに初めてそれらの領域にファイルが読み込まれ、その後何らかの処理が行われ、そして Task 2 も同様に読み込みを行ってから処理が行われる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41 これら Task は並列に実行されるべきであるが、ファイル読み込みの I/O 部分がネックとなり、本来並列実行される Task が読み込み待ちを起こしてしまう恐れがある。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 その上、読み込み方法が OS 依存となるために環境によって左右されやすく、プログラムの書き手が読み込みに関して制御しにくい。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 それらを解決するためには、ファイル読み込みと Task を分離し、ファイルの読み込みも制御しやすくでき、なおかつ高速で動くのではないかと考えた。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
47 \begin{figure}[htbp]
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
48 \begin{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
49 \includegraphics[scale=0.5]{images/mmap.pdf}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
50 \end{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
51 \caption{mmap image}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
52 \label{fig:mmap}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
53 \end{figure}
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
54
0
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 \subsection{Blocked Read の設計と実装}
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
58 Blocked Read とは、読み込みの Task と、それに対する何らかの処理の Task を切り離すための実装方法で、pread 関数にて実装した。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
59 pread 関数は、unistd.h に含まれているので、UNIX 専用の関数である。ファイルディスクリプタで指定したファイルの先頭 から
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
60 offset 分ずれた場所を基準として、その基準から count バイトを読み込み、それを buf に格納する。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
61 \ref{table:pread}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
62
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
63 \begin{tiny}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
64 \begin{table}[ht]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65 \begin{center}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
66 \label{table:pread}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67 \small
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
68 ssize\_t pread(int d, void *buf, size\_t nbyte, off\_t offset);
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
69
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
70 \begin{tabular}[t]{c|l}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
71 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
72 int d & 読み込むファイルのファイルディスクリプタ\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
73 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
74 void *buf & 読み込んだファイルの格納場所 \\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 size\_t nbyte & 読み込むファイル量\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
77 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
78 off\_t offset & ファイル先頭からの読み込み開始位置\\
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
79 \hline
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
80 \end{tabular}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81 \caption{pread 関数の概要}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 \end{center}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83 \end{table}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 \end{tiny}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86 mmap での実装との違いは、ファイルの読み込みがどのタイミングで起こるかである。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 mmap で実装したときは、Task 1つ 1つが読み込みを行ってから処理を行う。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
88 それに対して、Blocked Readは、読み込み専用の Read Task と、処理専用の Task を別々に生成する。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 Read Task はファイル全体を一度に読み込むのではなく、ある程度の大きさで分割を行う。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90 分割して読み込み終わったら、それぞれの Task が実行される。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91 (図\ref{fig:block})
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
92 Read Task が生成されて、その後 Task の生成となるので、Read Task は常に走っている必要がある。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
93
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
94 \begin{figure}[htbp]
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
95 \begin{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
96 \includegraphics[scale=0.5]{images/blockedreadimage.pdf}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
97 \end{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
98 \caption{Blocked Read image}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
99 \label{fig:block}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
100 \end{figure}
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 図\ref{fig:block} では、Read Task 1つに対して Task 1つ起動しているが、このように1つ1つ生成、起動をすると Task 生成でメモリを圧迫してしまい、全体的な動作に影響を与えてしまう。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
103 実際には Task をある一定数まとめた単位で生成し、起動を行っている。この単位を Task Block と定義する。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
104
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
105 Task Block 1つ当たりの Task 量を $n$ とおく。Task 1つ当たりの読み込む量を $L$ とすると、Task Block 1つ当たりの読み込む量は $L \times n$ となる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 Blocked Read が読み込み終わってから、Task Blockが起動するようにするので、Blocked Read 1つ当たりの読み込み量も $L \times n$となる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
108 もし、Task Block が Blocked Read よりも先走ってしまうとどうなるであろうか。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 まだ読み込まれていない領域に対して何らかの処理を行ってしまうので、正しい結果が返ってこなくなってしまう。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 それを防止するために、Blocked Read が読み込み終わってから Task Block が起動されるように wait をかけている。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
112 (図\ref{fig:block})
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
113 \begin{figure}[htbp]
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
114 \begin{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
115 \includegraphics[scale=0.5]{images/blockreadtask.pdf}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
116 \end{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
117 \caption{Blocked Read image}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
118 \label{fig:block}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
119 \end{figure}
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
120
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
121
0
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 \subsection{I/O 専用 thread の実装}
2408ae0327d5 add paper's base
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
124 Cerium Task Manager では、各種 Task にデバイスを設定することができる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
125 SPE\_ANY を使用すると、Task Manager で CPU の割り振りを自動的に行う。しかし、この機能を使用すると、Blocked Read に影響を与えてしまう。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
126 Blocked Read 、Task それぞれに SPE\_ANY にてデバイスの設定を行うと、Task Manager 側で自動的に CPU を割り当てられ、本来 Blocked Read は連続で読み込むはずが、他の Task を割り当てられてしまう。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
127 (図\ref{fig:speany})
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
128
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
129 \begin{figure}[htbp]
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
130 \begin{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
131 \includegraphics[scale=0.5]{images/speany.pdf}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
132 \end{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
133 \caption{SPE\_ANY での実装時}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
134 \label{fig:speany}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
135 \end{figure}
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
136
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
137 この問題を解決するために、Task Manager に新しく I/O 専用の thread 、 IO\_0 の追加を行った。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
138
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
139 %(図\ref{fig:addio0})
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
140 %%この問題を解決するために、Task Manager に IO\_0という新しいデバイス設定を追加した。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
141 %
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
142 %
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
143 %\begin{figure}[htbp]
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
144 %\begin{center}
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
145 %\includegraphics[scale=0.5]{images/addio_0.pdf}
2
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
146 %\end{center}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
147 %\caption{IO\_0 の追加}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
148 %\label{fig:addio0}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
149 %\end{figure}
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
150
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
151 SPE\_ANY で使用する CPU の設定よりも高く設定しているので、IO\_0 で設定を行う Read Task に SPE\_ANY で設定した 文字列検索 Task に割り込まれることがなくなる。
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
152 (図\ref{fig:io0})
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
153
3
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
154 \begin{figure}[htbp]
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
155 \begin{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
156 \includegraphics[scale=0.5]{images/io0.pdf}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
157 \end{center}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
158 \caption{Blocked Read Task を IO\_0 での実装時}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
159 \label{fig:io0}
05a0e70f5823 add some image files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
160 \end{figure}