コンテンツにスキップ

このWebサイトは、管理人が個人的に書き留めている備忘録です。それ以上でもそれ以下でもありません。
誤記・誤解・誤謬を含め、記述内容の確度を一切保証しません。責任を負いません。問い合わせ等を受け付けません。
This Mediawiki is a personal memorandum written by Administrator, nothing more, nothing less.
Administrator do NOT guarantee accuracy of content, including any errors, misunderstandings, fallacies, take NO responsibility, do NOT accept inquiries anything of the sort.

「電卓技術教科書〈研究編〉」の版間の差分

提供: Memorandum
編集の要約なし
 
(相違点なし)

2024年12月26日 (木) 13:14時点における最新版

メインページ > RPN電卓 > 所有する電卓に関する書籍 > 電卓技術教科書〈研究編〉

ラジオ技術社が「ラジオ技術全書 第028巻」として出版した、日本語では唯一無二の、電卓に関する技術を掲載した書籍。本書は〈研究編〉として、シャープ製のプログラマブル電卓に関して説明している。本書の監修も〈基礎編〉と同じくロケット・ササキことシャープ株式会社専務(当時)の佐々木正氏で、各章の執筆者がシャープのエンジニアである。よって、掲載されている内容のうち電卓への実装(入出力・演算と制御)や手法は、あくまでシャープが開発・設計した製品での流儀であり、当時のライバル企業であったカシオ計算機やキヤノンカメラ(現キヤノン)の電卓でも同じであったかは定かではないどころか、同じである保証はどこにも無い[1]

初版発行は昭和48年(1973年)3月10日だが、記法は加算器方式のままである。本書の白眉は関数電卓の実装方法であろう。本書発行当時のシャープは関数電卓を「プログラマブル電卓の延長」と捉えて開発したようだ。即ち、最初にプログラマブル電卓を開発、そこに「科学・数学向け」や「金融・財務向け」といった用途別の関数を演算するプログラム(ソフトウェア)を書き込んだROMや、これらプログラム(ソフトウェア)の演算過程で演算回路が使用する内部レジスタや演算ロジックを拡張する演算回路用LSIを追加で実装することで、製品としての関数電卓に仕立てていたようだ。

これは、販売を想定しているターゲット毎に求められる演算機能として、演算回路にメモリを追加するLSIや、開平演算ロジックを追加するLSIを取捨選択する等、販売価格帯や機種毎に演算回路用LSIを複数組み合わせて演算回路を構成することを意味し、現代から見ると非常に複雑で面倒なハードウェア構成だが、当時のシャープは「とくにフレキシビリティという点に配慮されています」と、このハードウェアオリエンテッド思考(志向)による演算回路の構成に利があることを強調[2]している。

基となるプログラマブル電卓は、演算回路は相変らず機種毎に演算できる桁数に合わせて論理回路(ワイヤードロジック)で設計し、ユーザが設定できるソースコードはキーボードの機能毎に4ビットエンコードしたものを磁気コアメモリに格納、それへの読み書きもワイヤードロジックで実行するというものだ。ソースコードの表現方法はHP-67/HP-97とほぼ同様である。本Webサイトで扱っている科学・数学向け関数電卓に仕立てる場合は、このプログラマブル電卓に、科学・数学向け関数電卓で所望される逆数・絶対値・指数関数・(自然および常用)対数関数・三角関数・逆三角関数・双曲線関数・逆双曲線関数・(直交および極)座標変換といった関数を演算するプログラム(ソフトウェア)を格納したROMを内蔵して仕立てた。これが本書発行当時のシャープでいうSC(Scientific Calculator:科学技術用電卓)の実装だった。

実例として、シャープのSCで三角関数・指数関数・対数関数など超越関数を演算する方法が記されている。

超越関数プログラム・ブロックはMOSのROM(リード・オンリ・メモリ)が使われており、sinx 等の超越関数を計算するプログラムが256×8ビットのROM二つに収められています。
超越関数は exlnxsinx および tan1x を基本関数として、他の関数はこれらの基本関数より代数式によって求められます。

当時はまだMOS ROMが不安定かつ高価だったこともあり、ROMの容量と部品としての価格を比較した結果の、遠回りした実装となっている。当然、代数式[3]を経て得られる関数の演算結果には丸めによる誤差が余計に乗ることになる。

また、これら基本関数は

ex=n=0xnn!=1+x+x22!+x33!+x44!+
lnx=2n=012n+1(x1x+1)2n+1=2{x1x+1+13(x1x+1)3+15(x1x+1)5+17(x1x+1)7+19(x1x+1)9}
sinx=n=0(1)n(2n+1)!x2n=xx23!+x45!x67!+x89!
tan1x=n=0(1)n2n+1x2n+1=xx33+x55x77+x99

から近似値を得るとある。

本来であれば4つともテイラー展開した式を採用すべきなところ、lnx と sinx は若干異なる式が採用されている。理由は明記されてないものの、恐らくは、演算回路の性能と首っ引きしながら、演算量が減らせて[4]、かつ、演算結果が現実的な時間で収束できる、テイラー展開とほぼ同等の式を採用したのだろう。尤も、肝腎要の「実機での次数 n 」がいくつなのかは明記されていない。ただ、lnx は式の冒頭で 2 を乗じているため、演算結果の最下桁がすべて偶数になってしまうことになり、あまり信用できない近似値となる。ちなみに lnx と sinx の正しいテイラー展開は下記である。

lnx=n=1(1)n1(x1)nn=(x1)(x1)22+(x1)33(x1)44+(x1)55
sinx=n=0(1)n(2n+1)!x2n+1=xx33!+x55!x77!+x99!

演算回路のクロック周波数に関する記述も興味深い。

一般の電卓が基本周波数50kHz程度であるのに対して、SCにおいてはその10倍程度の基本周波数が必要である。

つまり、シャープは科学・数学向け関数電卓のクロック周波数は500kHz程度まで上げねばならないと考えていたことになるが、1972年発売のHP-35ではマイクロプロセッサが200kHzで駆動しているにもかかわらず演算速度も演算精度もシャープ製を含む日本の関数電卓より高速かつ高精度であることを考えると、明らかにオーバースペックである。同じ項には

一般の電卓に比較してその生産台数が少ないため、LSI化を行なう場合のLSIの開発費がコストに大きな影響を与える。

ともあり、やはり本書出版当時のシャープが「電卓=ハードウェアオリエンテッド」という思考(志向)から脱していないことが判る。「関数電卓を新規に開発すること」と「機種毎に専用のLSIを起こすこと」がイコールで、これを原因に高コスト=高価格となることから販売量が見込めず、それゆえ専用LSIに仕込む演算ロジックを追い込む予算が割けず…と悪循環に陥っていたようだ[2]歴史と現在でも記載したが、日本の電卓メーカとHPでは、その出自も狙っている市場もまったく異なっていたことも原因だろう。

その典型例が、本書で科学技術用電卓として例示されているSHARP CS-363P(1971年発売、定価320,000円)のスペックである。「システムの基本周波数は1MHzで、このスピードを実現するため高速のMOSシフト・レジスタとTTL ICが使われ」「プログラムの命令は6ビットで構成されており」「超越関数プログラム・ブロックはMOSのROM(リード・オンリ・メモリ)が使われて」いるものの「演算スピード(乗算)は200ms」だそうだ。

これに対し、本書ではCS-363Pの競合機種としてHP初のRPN関数電卓であるHP-9100Aを表組みまでして比較しているが、さらりと「演算スピード(乗算)は12ms」としか触れられていない。HP製RPN電卓の特長で記載した通り、HP-9100AはLSIどころかICすら使用せず「CPUを含む演算部はトランジスタとダイオードと抵抗で40個のJKフリップフロップ回路と論理ゲートを構成」するという完全ディスクリートでありながら「クロックサイクル825ナノ秒=クロック周波数1.21MHz」で駆動し、「64ビット長で512ワード分のプログラム用ROMは16層基板に焼き込んでマザーボード代わりとし」「ワーキングメモリは6ビット長で磁気コアメモリを使用」して「乗算は12ミリ秒」で実行できている。

単純に比較すれば、ハードウェアはCS-363Pが圧倒していて、演算アーキテクチャはほぼ変わらないのに、実際の演算動作はHP-9100Aが16倍以上速いことになる。1971年時点でHP-9100Aの定価は1,694,000円から1,520,000円に値下げされたものの、CS-363Pとの価格差は依然として4.75倍もあったが、裏を返せば、CS-363PがMOS LSIを導入したことによるメリットは「価格低減だけ」ということになる。本書で比較しているということは、シャープ自身もHP-9100Aを購入し製品を解析しただろう。にもかかわらず、後発の新製品でこのような差があるということは、当時の日米間にあった演算回路と演算ロジックの設計に関する技術力の差もさることながら、日本では「電卓を含むコンピュータによる算術演算で重要なことは何か」を突き詰め切ることなく力業で押し切ろうとしたものの、それでも敵わなかった様子が見て取れる。どんなに優れたハードウェアを採用しても、使い方が拙ければ、その性能をフルに発揮させることはできない…まるでマジンガーZのようだが、これらの事実を冷静に俯瞰すれば、当時の彼我の格差は相当なものがあったと言わざるを得ない。

本書もまた日本の電卓マニア界隈では非常に有名で、〈基礎編〉同様、古本として市場に出回る数が非常に少ないためか、出物があっても速攻で消え、しかも異常な高値で攫まされることになる。管理人も、新品同然のHP-41CXをeBayで1台買うのと同じぐらいの価格で購入するに至った。

佐々木正 監修。1973年3月10日初版1刷発行。ラジオ技術社刊。334ページ。無線綴じ並製本。定価1,500円。

脚注

  1. Casio fx-10を参照のこと
  2. 2.0 2.1 世界初のマイクロプロセッサであるIntel 4004は1971年11月15日に出荷され、同じ年にIntel 4004で実装された電卓であるBusicom 141-PF日本ビジコンから発売されている。当時「電卓業界の風雲児」と呼ばれていた日本ビジコンの新製品である141-PFはシャープも解析しただろうし、マイクロプロセッサとメモリを組合せてソフトウェアオリエンテッドに構成するほうがハードウェアも単純で済むことは判っただろうが、なぜか当時のシャープは電卓でハードウェアオリエンテッド思考(志向)を堅持した。その理由は不明である。
  3. 日本では高校数学で学ぶが、念のため記載すると、
    cosx=sinxtanx=sinxtan1x
    xy=eylnx
    log10x=lnxln10
    である。即ち、この実装では、4つの基本関数で使用頻度が最多となりそうなのが lnx 、最も演算量(と誤差)が大きいのが xy になるが、本文に記した理由で lnx の演算結果が心許無いため、xy と log10x の演算結果と数学的な正解を較べると、無視できない量の誤差が出ると思われる。この挙動はHP-35National Semiconductor 4510と同じである。
  4. lnx では x1x+1 を定数と見做して先に演算することで演算量を節減できる可能性を見出せるが、sinx ではこの式に置き換えたからとて演算量が節減できるかは不明だ。現代の実装では 2 または 12n の乗算はシフタでビットシフトすることで乗算の演算を終えるが、シャープ製ワイヤードロジック電卓での乗算はそのような実装ではないため、各項の分母にある階乗の演算量が既に大きく、分子にある冪乗の羃指数を1減らしたとて大差無いように思えるうえ、そもそも tan1x を演算するテイラー展開との差分が「分母の 2n+1 が階乗か否か」だけなので、ROMの容量を削減するためにも両者でプログラムを共用し、分母の演算時に条件付分岐処理を入れることで、sinx にも正しいテイラー展開を採用できたと考える。本書の214ページにはシャープ製SCのプログラム機能として条件付分岐処理の記載があるため尚更である。