Comments
Description
Transcript
MSP430 ベンチマーク比較
参 考 資 料 アプリケーションレポート JAJA140 was SLAA236_ 2004 年6月 www.tij.co.jp MSP430 ベンチマーク比較 Greg Morton (I.Maruyama – 訳) MSP430 要約 このアプリケーションノートは MSP430 と他ベンダーのマイクロコントローラとのベンチマーク 結果を示します。IAR システムズの統合開発環境 Embedded Workbench™をアプリケーショ ンプログラムのビルドとシミュレーションモードによる実行に使用しました。使用したアプリケー ションプログラムで、各マイクロコントローラの異なった側面からのパフォーマンスをベンチマー クします。各アプリケーションプログラムのビルド時に、コードサイズと実行に必要な命令サイ クル数を記録します。図 1と図 2は各マイクロコントローラのアプリケーションプログラムにおけ る合計コードサイズと合計命令サイクル数を示します。 合計コードサイズ 10000 9000 サイズ (バイト) 8000 7000 6000 5000 4000 3000 2000 1000 0 MSP430F135 ATmega8 PIC18F242 8051 H8/300L MC68HC11 マイクロコントローラ 図1. 合計コードサイズ この資料は日本テキサス・インスツルメンツ(日本TI)が、お客様がTIおよび日本TI製品を理解するための一助としてお役に立てるよう、作成しておりま す。製品に関する情報は随時更新されますので最新版の情報を取得するようお勧めします。 TIおよび日本TIは、更新以前の情報に基づいて発生した問題や障害等につきましては如何なる責任も負いません。また、TI及び日本TIは本ドキュメン トに記載された情報により発生した問題や障害等につきましては如何なる責任も負いません。 最新の英語版資料 http://www-s.ti.com/sc/techlit/slaa205.pdf SLAA205 翻訳版 1 SLAA236 合計命令サイクル数 700000 命令サイクル数 600000 500000 400000 300000 200000 100000 0 MSP430F135 ATmega8 PIC18F242 8051 H8/300L MC68HC11 マイクロコントローラ 図2. 合計命令サイクル数 表 1にベンチマークしたマイクロコントローラの外部水晶発振周波数から CPU クロック入力へ の分周数を示します。CPU クロック分周数と合計命令サイクル数を掛け算した結果が、全て のコードの合計実行時間となります。 表1. マイクロコントローラ 2 CPU クロック分周数 CPU クロック分周数 MSP430F135 1 ATmega8 1 PIC18F242 4 8051 12 H8/300L 2 MC68HC11 4 MSP430 ベンチマーク比較 SLAA236 表 2は MSP430 を1とした時の各マイクロコントローラの合計コードサイズと、合計命令サイク ル数を示します。 表2. MSP430 を 1 とした時の結果 マイクロコントローラ 合計コードサイズ 合計命令サイクル数 MSP430F135 1.00 1.00 ATmega8 1.82 1.26 PIC18F242 3.31 1.98 8051 2.45 1.58 H8/300L 2.45 1.78 MC68HC11 2.36 3.76 表 3 は各マイクロコントローラでアプリケーションプログラムをベンチマークしたコードサイズ (バイト単位)と命令サイクル数を示します。 表3. アプリケーション プログラム名 MSP430F135 バイト数 サイクル数 コードサイズ及び命令サイクル数 ATmega8 バイト数 サイクル数 PIC18F242 バイト数 サイクル数 8051 バイト数 H8/300L サイクル数 バイト数 MC68HC11 サイクル数 バイト数 サイクル数 8-bit Math 172 299 116 157 386 318 141 112 354 680 285 387 8-bit Matrix 118 2899 364 5300 676 20045 615 17744 356 9098 380 15412 8-bit Switch 180 50 342 131 404 109 209 84 362 388 387 214 16-bit Math 172 343 174 319 598 625 361 426 564 802 315 508 16-bit Matrix 156 5784 570 24426 846 27021 825 29468 450 15280 490 23164 16-bit Switch 178 49 388 144 572 163 326 120 404 398 405 230 32-bit Math 250 792 316 782 960 1818 723 2937 876 1756 962 1446 Floating-point Math 662 1207 1042 1601 1778 1599 1420 2487 1450 2458 1429 4664 FIR Filter 668 152193 1292 164793 2146 248655 1915 206806 1588 245588 1470 567139 Matrix Multiplication Total 252 6633 510 16027 936 36190 345 9454 462 26750 499 26874 2808 170249 5114 213680 9302 336543 6880 269638 6866 303198 6622 640038 MSP430 ベンチマーク比較 3 SLAA236 ハードウエア乗算器とコンパイラの最適化の影響 MSP430 のハードウエア乗算器の影響をコンパイラの最適化とともに示します。 MSP430F135 は MSP430F149 との比較としてベンチマークしました。MSP430F149 はハー ドウエア乗算器を持っていますが MSP430F135 は持っていません。この比較には IAR の MSP430 用最新バージョン 3.10A の C コンパイラを用いてビルドし、ベンチマークのアプリケ ーションプログラム実行を行ないました。 表 4に結果を示します。 表4. アプリケーション ハードウエア乗算器とコンパイラの最適化の影響 MSP430F135 MSP430F149 MSP430F149 最適化: 無効 最適化: 無効 最適化: 有効 ハードウエア乗算器: なし ハードウエア乗算器: あり ハードウエア乗算器: あり バイト数 8 Bit Math 8 Bit 2 Dim Matrix 8 Bit Switch Case 16 Bit Math 16 Bit 2 Dim Matrix 16 Bit Switch Case 32 Bit Math Floating-point Math FIR Filter Matrix Multiplication Total 4 172 118 180 172 156 178 250 662 688 252 2828 MSP430 ベンチマーク比較 サイクル数 299 2899 50 343 5784 49 792 1207 152193 6633 170249 バイト数 156 118 180 156 156 178 248 702 728 236 2858 サイクル数 268 2899 50 268 5784 49 607 1012 143694 5399 160030 バイト数 136 124 178 134 112 176 222 678 732 166 2658 サイクル数 249 1110 49 248 1174 48 583 993 137161 2847 144462 SLAA236 付録 ベンチマークしたアプリケーションプログラム マイクロコントローラのパフォーマンスをさまざまな側面でベンチマークするために、下に示す 簡単なアプリケーションセットをシミュレーションモードにて、各マイクロコントローラについて実 行しました。ソースコードは付録にあります。 8-bit_math.c – ソースファイルは 3 つの計算関数を含んでいます。3 つの計算関数は 2 つの 8 ビットの足し算、掛け算、割り算です。“main()”関数はそれぞれの関数を呼び 出します。 16-bit_math.c – ソースファイルは 3 つの計算関数を含んでいます。3 つの計算関数 は 2 つの 16 ビットの足し算、掛け算、割り算です。“main()”関数はそれぞれの関数を 呼び出します。 32-bit_math.c – ソースファイルは 3 つの計算関数を含んでいます。3 つの計算関数 は 2 つの 32 ビットの足し算、掛け算、割り算です。“main()”関数はそれぞれの関数を 呼び出します。 floating_point_math.c – ソースファイルは 3 つの計算関数を含んでいます。3 つの 計算関数は 2 つの浮動小数点の足し算、掛け算、割り算です。“main()”関数はそれぞ れの関数を呼び出します。 8-bit_switch_case.c – ソースファイルには 1 つの 16 ケースを持つスイッチステート 関数が含まれています。8 ビットの値は特定のケースを選択します。“main()”関数は “switch”関数を最終ケースにより選択した入力パラメータによって呼び出されます。 16-bit_switch_case.c – ソースファイルには 1 つの 16 ケースを持つスイッチステート 関数が含まれています。16 ビットの値は特定のケースを選択します。“main()”関数は “switch”関数を最終ケースにより選択した入力パラメータによって呼び出されます。 8-bit_2-dim_matrix.c – ソースファイルには 3 つの 2 次元のアレイを含み、8 ビット の値の内 1 つは初期化されています。“main()”関数はアレイ 1 からアレイ 2、アレイ 2 からアレイ 3 に値をコピーします。 16-bit_2-dim_matrix.c – ソースファイルには 3 つの 2 次元のアレイを含み、16 ビット の値の内 1 つは初期化されています。“main()”関数はアレイ 1 からアレイ 2、アレイ 2 からアレイ 3 に値をコピーします。 fir_filter.c – ソースファイルにはシュミレーションされた ADC 入力データを使用した 17 係数タップのフィルター出力するコードが含まれています。 matrix_multiplication.c – ソースファイルには 3x4 マトリクスを 4x5 マトリクスによっ て乗算するコードが含まれています。 MSP430 ベンチマーク比較 5 SLAA236 コンパイラ CコンパイラはIARシステムズの統合開発環境(IDE) Embedded Workbench™にバンドルさ れており、ベンチマークしたアプリケーションプログラムのビルドに使用しました。各マイクロコ ントローラの評価版IDEはIARシステムズのwebサイトhttp://www.iar.comから入手可能です。 表 5にベンチマークアプリケーションのビルドに使用した各マイクロコントローラ用のCコンパイ ラのバージョンを示します。コードサイズはそれぞれのアプリケーションプログラムのビルド時 に記録しました。 全てのアプリケーションプログラムはコンパイラの最適化を無効にしてビルドしました。これに よりビルドした結果にコンパイラの影響を最小とします。例えば 8051 のコンパイラは最適化を 有効とするとコンパイル時に幾つかの算術関数の使用を可能にします。最適化アルゴリズム は入力値を変化させずに算術関数とすることを決定するのに十分な性能です。これはコンパ イラが算術関数の見極めと関数コードをその結果から置換することを可能にしています。 全てのアプリケーションプログラムの実行はシミュレーションモードで行いました。命令数は各 アプリケーションプログラムの実行に必要な値です。 表5. マイクロコントローラ 6 C コンパイラバージョン IAR C コンパイラバージョン MSP430F135 2.21B Atmel ATmega8 3.10C Microchip PIC18F242 6.10A Generic 8051 2.12A Renesas H8/300L 4.20A Motorola MC68HC11 4.45A MSP430 ベンチマーク比較 SLAA236 ベンチマークしたアプリケーションプログラムのソースコード 以下は本ドキュメントで使用したベンチマークアプリケーションプログラムのソースコードファイル です。 8-bit Math.c /****************************************************************************** * * * Name : 8-bit Math * Purpose : Benchmark 8-bit math functions. * ******************************************************************************* / typedef unsigned char UInt8; UInt8 add(UInt8 a, UInt8 b) { return (a + b); } UInt8 mul(UInt8 a, UInt8 b) { return (a * b); } UInt8 div(UInt8 a, UInt8 b) { return (a / b); } void main(void) { volatile UInt8 result[4]; result[0] = 12; result[1] = 3; result[2] = add(result[0], result[1]); result[1] = mul(result[0], result[2]); result[3] = div(result[1], result[2]); return; } MSP430 ベンチマーク比較 7 SLAA236 8-bit 2-dim Matrix.c /******************************************************************************* * * Name : 8-bit 2-dim Matrix * Purpose : Benchmark copying 8-bit values. * *******************************************************************************/ typedef unsigned char UInt8; const UInt8 m1[16][4] = { {0x12, 0x56, 0x90, 0x34}, {0x78, 0x12, 0x56, 0x90}, {0x34, 0x78, 0x12, 0x56}, {0x90, 0x34, 0x78, 0x12}, {0x12, 0x56, 0x90, 0x34}, {0x78, 0x12, 0x56, 0x90}, {0x34, 0x78, 0x12, 0x56}, {0x90, 0x34, 0x78, 0x12}, {0x12, 0x56, 0x90, 0x34}, {0x78, 0x12, 0x56, 0x90}, {0x34, 0x78, 0x12, 0x56}, {0x90, 0x34, 0x78, 0x12}, {0x12, 0x56, 0x90, 0x34}, {0x78, 0x12, 0x56, 0x90}, {0x34, 0x78, 0x12, 0x56}, {0x90, 0x34, 0x78, 0x12} }; void main (void) { int i, j; volatile UInt8 m2[16][4], m3[16][4]; for(i = 0; i < 16; i++) { for(j=0; j < 4; j++) { m2[i][j] = m1[i][j]; m3[i][j] = m2[i][j]; } } return; } 8 MSP430 ベンチマーク比較 SLAA236 8-bit Switch Case.c /******************************************************************************* * * Name : 8-bit Switch Case * Purpose : Benchmark accessing switch statement using 8-bit value. * *******************************************************************************/ typedef unsigned char UInt8; UInt8 switch_case(UInt8 a) { UInt8 output; switch (a) { case 0x01: output = 0x01; break; case 0x02: output = 0x02; break; case 0x03: output = 0x03; break; case 0x04: output = 0x04; break; case 0x05: output = 0x05; break; case 0x06: output = 0x06; break; case 0x07: output = 0x07; break; case 0x08: output = 0x08; break; case 0x09: output = 0x09; break; case 0x0a: output = 0x0a; break; case 0x0b: output = 0x0b; break; case 0x0c: output = 0x0c; MSP430 ベンチマーク比較 9 SLAA236 break; case 0x0d: output = 0x0d; break; case 0x0e: output = 0x0e; break; case 0x0f: output = 0x0f; break; case 0x10: output = 0x10; break; } /* end switch*/ return (output); } void main(void) { volatile UInt8 result; result = switch_case(0x10); return; } 10 MSP430 ベンチマーク比較 SLAA236 16-bit Math.c /******************************************************************************* * * Name : 16-bit Math * Purpose : Benchmark 16-bit math functions. * *******************************************************************************/ typedef unsigned short UInt16; UInt16 add(UInt16 a, UInt16 b) { return (a + b); } UInt16 mul(UInt16 a, UInt16 b) { return (a * b); } UInt16 div(UInt16 a, UInt16 b) { return (a / b); } void main(void) { volatile UInt16 result[4]; result[0] = 231; result[1] = 12; result[2] = add(result[0], result[1]); result[1] = mul(result[0], result[2]); result[3] = div(result[1], result[2]); return; } MSP430 ベンチマーク比較 11 SLAA236 16-bit 2-dim Matrix.c /******************************************************************************* * * Name : 16-bit 2-dim Matrix * Purpose : Benchmark copying 16-bit values. * *******************************************************************************/ typedef unsigned short UInt16; const UInt16 m1[16][4] = { {0x1234, 0x5678, 0x9012, 0x3456}, {0x7890, 0x1234, 0x5678, 0x9012}, {0x3456, 0x7890, 0x1234, 0x5678}, {0x9012, 0x3456, 0x7890, 0x1234}, {0x1234, 0x5678, 0x9012, 0x3456}, {0x7890, 0x1234, 0x5678, 0x9012}, {0x3456, 0x7890, 0x1234, 0x5678}, {0x9012, 0x3456, 0x7890, 0x1234}, {0x1234, 0x5678, 0x9012, 0x3456}, {0x7890, 0x1234, 0x5678, 0x9012}, {0x3456, 0x7890, 0x1234, 0x5678}, {0x9012, 0x3456, 0x7890, 0x1234}, {0x1234, 0x5678, 0x9012, 0x3456}, {0x7890, 0x1234, 0x5678, 0x9012}, {0x3456, 0x7890, 0x1234, 0x5678}, {0x9012, 0x3456, 0x7890, 0x1234} }; void main(void) { int i, j; volatile UInt16 m2[16][4], m3[16][4]; for(i = 0; i < 16; i++) { for(j = 0; j < 4; j++) { m2[i][j] = m1[i][j]; m3[i][j] = m2[i][j]; } } return; } 12 MSP430 ベンチマーク比較 SLAA236 16-bit Switch Case.c /****************************************************************************** * * * Name : 16-bit Switch Case * Purpose : Benchmark accessing switch statement using 16-bit value. * ******************************************************************************* / typedef unsigned short UInt16; UInt16 switch_case(UInt16 a) { UInt16 output; switch (a) { case 0x0001: output = 0x0001; break; case 0x0002: output = 0x0002; break; case 0x0003: output = 0x0003; break; case 0x0004: output = 0x0004; break; case 0x0005: output = 0x0005; break; case 0x0006: output = 0x0006; break; case 0x0007: output = 0x0007; break; case 0x0008: output = 0x0008; break; case 0x0009: output = 0x0009; break; case 0x000a: output = 0x000a; break; case 0x000b: output = 0x000b; break; MSP430 ベンチマーク比較 13 SLAA236 case 0x000c: output = 0x000c; break; case 0x000d: output = 0x000d; break; case 0x000e: output = 0x000e; break; case 0x000f: output = 0x000f; break; case 0x0010: output = 0x0010; break; } /* end switch*/ return (output); } void main(void) { volatile UInt16 result; result = switch_case(0x0010); return; } 14 MSP430 ベンチマーク比較 SLAA236 32-bit Math.c /******************************************************************************* * * Name : 32-bit Math * Purpose : Benchmark 32-bit math functions. * *******************************************************************************/ #include <math.h> typedef unsigned long UInt32; UInt32 add(UInt32 a, UInt32 b) { return (a + b); } UInt32 mul(UInt32 a, UInt32 b) { return (a * b); } UInt32 div(UInt32 a, UInt32 b) { return (a / b); } void main(void) { volatile UInt32 result[4]; result[0] = 43125; result[1] = 14567; result[2] = add(result[0], result[1]); result[1] = mul(result[0], result[2]); result[3] = div(result[1], result[2]); return; } MSP430 ベンチマーク比較 15 SLAA236 Floating-point Math.c /****************************************************************************** * * * Name : Floating-point Math * Purpose : Benchmark floating-point math functions. * ******************************************************************************* / float add(float a, float b) { return (a + b); } float mul(float a, float b) { return (a * b); } float div(float a, float b) { return (a / b); } void main(void) { volatile float result[4]; result[0] = 54.567; result[1] = 14346.67; result[2] = add(result[0], result[1]); result[1] = mul(result[0], result[2]); result[3] = div(result[1], result[2]); return; } 16 MSP430 ベンチマーク比較 SLAA236 FIR Filter.c /******************************************************************************* * * Name : FIR Filter * Purpose : Benchmark a FIR filter. The input values for the filter * is an array of 51 16-bit values. The order of the filter * 17. * *******************************************************************************/ #ifdef MSP430 #include "msp430x13x.h" #endif #include <math.h> #define FIR_LENGTH 17 const float COEFF[FIR_LENGTH] = { -0.000091552734, 0.000305175781, 0.004608154297, 0.003356933594, -0.025939941406, -0.044006347656, 0.063079833984, 0.290313720703, 0.416748046875, 0.290313720703, 0.063079833984, -0.044006347656, -0.025939941406, 0.003356933594, 0.004608154297, 0.000305175781, -0.000091552734 }; /* The following array simulates input A/D converted values */ const unsigned int INPUT[] = { 0x0400, 0x0800, 0x0C00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x2400, 0x2000, 0x1C00, 0x1800, 0x1400, 0x1000, 0x0C00, 0x0800, 0x0400, 0x0400, 0x0800, 0x0C00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x2400, 0x2000, 0x1C00, 0x1800, 0x1400, 0x1000, 0x0C00, 0x0800, 0x0400, 0x0400, 0x0800, 0x0C00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x2400, 0x2000, 0x1C00, 0x1800, 0x1400, 0x1000, 0x0C00, 0x0800, 0x0400 }; void main(void) { int i, y; /* Loop counters */ volatile float OUTPUT[36]; #ifdef MSP430 MSP430 ベンチマーク比較 17 SLAA236 WDTCTL = WDTPW + WDTHOLD; /* Stop watchdog timer */ #endif for(y = 0; y < 36; y++) { for(i = 0; i < FIR_LENGTH/2; i++) { OUTPUT[y] = COEFF[i] * ( INPUT[y + 16 - i] + INPUT[y + i] ); }; OUTPUT[y] = OUTPUT[y] + ( INPUT[y + 16 - i] * COEFF[i] ); } return; } 18 MSP430 ベンチマーク比較 SLAA236 Matrix Multiplication.c /******************************************************************************* * * Name : Matrix Multiplication * Purpose : Benchmark multiplying a 3x4 matrix by a 4x5 matrix. * Matrix contains 16-bit values. * *******************************************************************************/ typedef unsigned short UInt16; const UInt16 m1[3][4] = { {0x01, 0x02, 0x03, 0x04}, {0x05, 0x06, 0x07, 0x08}, {0x09, 0x0A, 0x0B, 0x0C} }; const UInt16 m2[4][5] = { {0x01, 0x02, 0x03, 0x04, 0x05}, {0x06, 0x07, 0x08, 0x09, 0x0A}, {0x0B, 0x0C, 0x0D, 0x0E, 0x0F}, {0x10, 0x11, 0x12, 0x13, 0x14} }; void main(void) { int m, n, p; volatile UInt16 m3[3][5]; for(m = 0; m < 3; m++) { for(p = 0; p < 5; p++) { m3[m][p] = 0; for(n = 0; n < 4; n++) { m3[m][p] += m1[m][n] * m2[n][p]; } } } return; } (SLAA207_2004.06) MSP430 ベンチマーク比較 19 IMPORTANT NOTICE ご注意 日本テキサス・インスツルメンツ株式会社(以下TIJといいます) 及びTexas Instruments Incorporated(TIJの親会社、以下 TIJおよびTexas Instruments Incorporatedを総称してTIとい います)は、 その製品及びサービスを任意に修正し、改善、改良、 その他の変更をし、 もしくは製品の製造中止またはサービスの提 供を中止する権利を留保します。従いまして、 お客様は、発注され る前に、関連する最新の情報を取得して頂き、 その情報が現在有 効かつ完全なものであるかどうかご確認下さい。全ての製品は、 お 客様とTIとの間に取引契約が締結されている場合は、当該契約 条件に基づき、 また当該取引契約が締結されていない場合は、 ご 注文の受諾の際に提示されるTIの標準契約約款に従って販売 されます。 TIは、そのハードウェア製品が、TIの標準保証条件に従い販 売時の仕様に対応した性能を有していること、 またはお客様とTI との間で合意された保証条件に従い合意された仕様に対応した 性能を有していることを保証します。検査およびその他の品質管 理技法は、TIが当該保証を支援するのに必要とみなす範囲で行 なわれております。各デバイスの全てのパラメーターに関する固有 の検査は、政府がそれ等の実行を義務づけている場合を除き、必 ずしも行なわれておりません。 TIは、製品のアプリケーションに関する支援もしくはお客様の製 品の設計について責任を負うことはありません。TI製部品を使用 しているお客様の製品及びそのアプリケーションについての責任 はお客様にあります。TI製部品を使用したお客様の製品及びア プリケーションについて想定されうる危険を最小のものとするため、 適切な設計上および操作上の安全対策は、必ずお客様にてお取 り下さい。 TIは、TIの製品もしくはサービスが使用されている組み合せ、 機械装置、 もしくは方法に関連しているTIの特許権、著作権、回 路配置利用権、 その他のTIの知的財産権に基づいて何らかのラ イセンスを許諾するということは明示的にも黙示的にも保証も表明 もしておりません。TIが第三者の製品もしくはサービスについて情 報を提供することは、TIが当該製品もしくはサービスを使用するこ とについてライセンスを与えるとか、保証もしくは是認するということ を意味しません。そのような情報を使用するには第三者の特許そ の他の知的財産権に基づき当該第三者からライセンスを得なけれ ばならない場合もあり、 またTIの特許その他の知的財産権に基づ きTIからライセンスを得て頂かなければならない場合もあります。 TIのデータ・ブックもしくはデータ・シートの中にある情報を複製 することは、 その情報に一切の変更を加えること無く、且つその情 報と結び付られた全ての保証、条件、制限及び通知と共に複製が なされる限りにおいて許されるものとします。当該情報に変更を加 えて複製することは不公正で誤認を生じさせる行為です。TIは、 そのような変更された情報や複製については何の義務も責任も負 いません。 TIの製品もしくはサービスについてTIにより示された数値、特性、 条件その他のパラメーターと異なる、 あるいは、 それを超えてなされ た説明で当該TI製品もしくはサービスを再販売することは、当該 TI製品もしくはサービスに対する全ての明示的保証、及び何らか の黙示的保証を無効にし、且つ不公正で誤認を生じさせる行為 です。TIは、 そのような説明については何の義務も責任もありません。 なお、 日本テキサス・インスツルメンツ株式会社半導体集積回路 製品販売用標準契約約款もご覧下さい。 http://www.tij.co.jp/jsc/docs/stdterms.htm Copyright 2005, Texas Instruments Incorporated 日本語版 日本テキサス・インスツルメンツ株式会社 弊 社 半 導 体 製 品 の 取り扱 い・保 管につ い て 半導体製品は、取り扱い、保管・輸送環境、基板実装条件によっ ては、お客様での実装前後に破壊/劣化、または故障を起こすこ とがあります。 弊社半導体製品のお取り扱い、ご使用にあたっては下記の点 を遵守して下さい。 1. 静電気 ● 素手で半導体製品単体を触らないこと。どうしても触 る必要がある場合は、リストストラップ等で人体からアー スをとり、導電性手袋等をして取り扱うこと。 ● 弊社出荷梱包単位 (外装から取り出された内装及び個装) 又は製品単品で取り扱いを行う場合は、接地された導 電性のテーブル上で(導電性マットにアースをとったも の等)、アースをした作業者が行うこと。また、コンテ ナ等も、導電性のものを使うこと。 ● マウンタやはんだ付け設備等、半導体の実装に関わる 全ての装置類は、静電気の帯電を防止する措置を施す こと。 ● 前記のリストストラップ・導電性手袋・テーブル表面 及び実装装置類の接地等の静電気帯電防止措置は、常 に管理されその機能が確認されていること。 2. 温・湿度環境 ● 温度:0∼40℃、相対湿度:40∼85%で保管・輸送 及び取り扱いを行うこと。(但し、結露しないこと。) ● 直射日光があたる状態で保管・輸送しないこと。 3. 防湿梱包 ● 防湿梱包品は、開封後は個別推奨保管環境及び期間に 従い基板実装すること。 4. 機械的衝撃 ● 梱包品 (外装、内装、個装) 及び製品単品を落下させたり、 衝撃を与えないこと。 5. 熱衝撃 ● はんだ付け時は、最低限260℃以上の高温状態に、10 秒以上さらさないこと。(個別推奨条件がある時はそれ に従うこと。 ) 6. 汚染 ● はんだ付け性を損なう、又はアルミ配線腐食の原因と なるような汚染物質(硫黄、塩素等ハロゲン)のある環 境で保管・輸送しないこと。 ● はんだ付け後は十分にフラックスの洗浄を行うこと。 (不純物含有率が一定以下に保証された無洗浄タイプの フラックスは除く。) 以上 2001.11