|
|
 |
|
What does Intel's MMX mean for developers of scientific/industrial imaging systems?
|
|
|
|
As you may already know, Intel MMX technology is a set of 57 instructions added to Pentium (P55C) and Pentium Pro (Pentium II) processors.
These instructions were specifically designed to manipulate and process video, audio and graphical data more efficiently. They are oriented to
the highly parallel, repetitive sequences found in multimedia (and scientific/industrial) operations.
So what does all this mean to you? It can mean more performance for your imaging dollar. How much more? Well, as illustrated in
the table, execution times improved dramatically after careful optimization of the Matrox Imaging Library
(MIL) for MMX. Now, more than ever, the host can be used to solve demanding applications.
|
|
As illustrated, optimization of MIL for MMX offers significant performance gains, especially for Pentium with MMX platform
|
|
| |
MMX-enbaled MIL 5.0 |
non-MMX MIL 5.0 |
MMX-enbaled MIL 5.0 |
non-MMX MIL 5.0 |
| 512 x 512 x 8-bit image |
Intel Pentium II @ 266 MHz |
Intel Pentium with MMX @ 200 MHz |
| Point-to-Point Operation |
| Add two images with saturation * |
5.6 ms |
11.2 ms |
4.4 ms |
18.3 ms |
| Threshold * |
2.9 ms |
9.7 ms |
2.7 ms |
16.5 ms |
| Filtering Operations |
| Sharpen |
10.2 ms |
27.7 ms |
13.3 ms |
78.0 ms |
| General convolution 3 x 3 with saturation |
12.6 ms |
38.7 ms |
17.4 ms |
200.9 ms |
| Edge detection (Sobel) |
14.9 ms |
52.1 ms |
21.0 ms |
108.6 ms |
| Morphological Operations |
| Grayscale erosion/dilation |
5.7 ms |
23.2 ms |
6.8 ms |
40.6 ms |
| Pattern Matching |
| Find a 128 x 128 model |
7.2 ms |
11.9 ms |
11.7 ms |
28.6 ms |
Scientific and industrial imaging may prove to benefit the most from MMX, as benchmarks
indicate (note: operations denoted with * are I/O bound).
|
|
While the areas that Intel has targeted with MMX technology include games, communications, and
multimedia; scientific/industrial image processing stands to gain the most. MMX addresses the key characteristics of applications that must handle large
amounts of image, video and graphics data. It was built to handle compute-intensive algorithms that perform repetitive operations on small data
types, such as imaging algorithms, and the 8-bit pixels commonly used in all areas of image processing. Data is also manipulated in word (16-bit), double
word (32-bit), and quad word (64-bit) format and packed into 64-bit registers.
|
|
|
|
At present, limitations on the hardware side include I/O bandwidth, a shared memory architecture, system management, and the ability to handle integer and floating
point operations. On the software side, the execution times of certain imaging algorithms cannot be improved.
|
|
|
|
For those of you in the "build your own" camp, here is a little insight into what it takes to try your hand at programming for MMX. The only way to benefit from
MMX is by hand-optimized coding in assembly language for the critical portion of the algorithm, or the so-called "critical loop". Furthermore, you need an intimate understanding of
the Intel architecture and software tools used to develop or fine tune this code, such as Intel's Vtune.
|
|
While MMX is good news for scientific/industrial imaging, you have to make sure the software you use is carefully designed or optimized to take advantage
of it. If you are not prepared to make the investment in developing this software yourself, you can now rely on vision vendors like Matrox to do it for you. Support and upgrades
are left to the supplier, while you benefit from the speed improvements of present MMX-enabled processors, and the faster ones to come (300 MHz Pentium IIs and beyond).
|
|
|
|
|