Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Lisp_chibi_machine 190427

285 vues

Publié le

Very small Lisp Machines

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Lisp_chibi_machine 190427

  1. 1. ちびLispとか 2019/APR/27 2017/JUL/08 2011/FEB/20 2010/MAR/20 たけおか@AXE @takeoka
  2. 2. 2 (株)アックスの基本ソフトの採用実績  axLinux組込みLinux  家電、デジタルTV  ネットワーク機器  携帯機器  ロボット(AIST)  航空自衛隊  スケジューラを強化  組込みBSD  ネットワーク機器  HPC  ExaOSの研究(AICS)  つくば次世代スパコン研究  独自RTOS  XTAL  ザウルス  オリンパスデジカメ  絹;Posix1003.13 RTOS  AUTOSAR  JasParへの参加
  3. 3. たけおかの論理推論AIを高速化する特許 ・ルールの集合を「ルール・セット」と呼 ぶ ・機械学習を使用して、推論対象の内 容により、 「ルール・セット」を切り替える。 ・ルール・セットが小さくなり、論理推 論が高速になる 特許番号【特許第6224811号】 登録日 【2017年10月13日】 「ルールセットを選択可能な推論エンジンを有するプ ログラム、装置及び方法」
  4. 4.  1.「リレーショナルデータベースを内在するカーネル プログラム、方法及び装置」 ● かなり広範囲に適用される… ● データベースをカーネル空間内で動作させる ● Data Base in the kernel space ● 特許番号【特許第5711840号】 ● 登録日 【2015年3月13日】 ● 豊田通商(現在:株式会社ネクスティエレクトロニクスと、 たけおかラボ株式会社との共同特許 ● 2.「アプリケーションに依存することなくファイルにアクセ スするOSプログラム及び方法」 ● データファイルに、データへのアクセス手続きを、くっつ けておく ● Access methods in a data file ● OS API経由で、データファイル内のアクセス手続きを呼び出す ● どんな形式のファイルでも、データの読み書きができる ● 特許番号【特許第6143038号】 ● 登録日 【2017年5月19日】 ● 株式会社ネクスティエレクトロニクスと、 たけおかラボ株式会社との共同特許 ※たけおかラボ(株)は、(株)アックスの子会社 取得済み特許:今後の基本ソフトウェアの重要な部分
  5. 5. たけおかのプロフィール1980年代: UNIXの仮名漢字変換システムWnnや Temporal Prolog (時相論理Prolog)を京大数解研の地下辺りで作ったり。渋谷や神保町辺りで 国産X Window端末などの設計開発に携わる。TCP/IPスタックを自分で書く 1990年代初頭:豊橋技科大 湯淺研にて、1024PE規模の超並列計算機“SM-1”の LSIハードウェア、基本ソフトウェアの設計開発に携わる。 現在: 実時間OSを作らせたり、 Linux, BSDのコアな移植をさせたり、 自動運転の研究開発を手伝ったり、 Lispで、AI開発中(推論システム+機械学習のハイブリッドAI) 湯淺研 SM-1 フロントエンドはSparc 開発環境はCommon LispとC 萩谷さんに貰った (サインはしてくれない) ザウルス SH-3版 (XTAL採用) オリンパス デジカメ (XTAL採用)
  6. 6. 6 オレの三目並べ(論理推論AI)• 1977年(高校2年生)に、三目並べ(○×)を打つプログラムを開発 • ”Artificial Intelligence: The Heuristic Programming Approach”(1971/DEC)の 日本語版,「人工知能 発見的プログラミング」(1972/JAN)を読んで… • 真面目に木探索. AIが自分で最適な手を見つける • 私より、プログラムの方が良い手を打った (私は、勝負事に興味が無い) • 巨大プログラム電卓 500ステップ,30メモリ(2分割使用 可能),命令は アセンブラ風,浮動小数点数は使い放題 • 同じ年にTK-80を入手し、8080機械語でも記述 • 全メモリ:512Bytes, CPUクロック周波数:2MHz • オセロゲームを打つプログラムが流行るのはその何年も後 • 「発見的手法(Heuristic)」がAI • 人間がプログラミングした以上のことがらを、AIが見つける 並列AI開発が ライフワーク
  7. 7. 機械学習AI(DL)と論理推論AIのハイブリッド • 裸のDL を、論理推論AIで補う • アヒルかウサギか、画像だけでは判断できない • 常識ルール・ベースを持った、論理推論AIに掛けると、最終判定が出る カメラカメラ 入力 学習済み モデル 機械学習による 判定器 推論規則 論理推論システム 出力 機械学習AIの出力: ウサギの確率50%, アヒルの確率50% 池の確率80% 最終出力: アヒル 一般常 ル ル識 ー アヒル(X) :- 池に居る(X). ウサギ(X) :- に居る陸 (X).
  8. 8. 温故知新
  9. 9. CONS(MIT) Symbolics Alto(Xerox) NTT ELIS (1986年) 神戸大 FAST Lisp (1979年) 大阪大EVLIS (1982年)並列 富士通 FACOM α (1985年) 理研FLATS (1984年) Lispマシン,高級言語マシン
  10. 10. Prologマシン 並列Lispマシン 1982年ごろから 並列Prologマシン 1986年ごろから 神戸大PARK(1986) PIM/m 並列 神戸大PEK (1984年) MELCOM PSI (1986年) 東大PIE (1993年)並列 PIM/p 並列
  11. 11. 11 高級言語マシン,Smalltalkマシン ● Xerox Dシリーズ ● Alto ● 世界で始めてマウスが付いた機械 ● ウインドウ・システム ● コヒーレント・キャッシュが最初に開発されたのは、 Xerox Dシリーズ(Dragon) ● いろんな言語が動作したが… ● Smalltalk ● Mesa ● Interlisp-D DEC Firefly(Dragonの後継) Alto Star (Dandelion)
  12. 12. 12 20世紀の高級言語マシン  「AIマシン」と言われた – Lispマシン, Smalltalkマシン  OSなにそれ?  プログラミング言語が動けば幸せ  OSなんて要らない  大昔のBASICマシンを知っているか?  ファイル操作  ls, rm, mv など、すべてBASIC言語から操作した  対話的な言語で、CPU(計算機)と直接対話  LL, スクリプト系言語はインタープリタ それなのに、対話的に使わないとは、けしからん
  13. 13. Lispマシン,高級言語マシン  Lispマシンは、OSもLispで記述  Smalltalkマシンも、環境はすべてSmalltalkで 記述  日本のPrologマシン(PSI)は、KL-1でOSを記述  ウインドウ・システムなどもその言語で書く  ファイル・システムをIOプロセッサにやらせ ている軟弱なシステムもあった  日本製に多い
  14. 14. Lispマシン,高級言語マシン  高級言語マシンが具備すべき要件(と思われるも の)  タグ付きアーキテクチャ  主にデータにタグを付ける  データにそのオブジェクトの型が付いている  通常、GC bitもある  多重分岐  タグを見て、高速に手続きをディスパッチ  仮想記憶  AIアプリケーションは、大きな記憶を必要とするが、実メモ リは小さかった
  15. 15. 通常マシンの特徴 昔 vs 今 - - 昔 - - メモリがクソ遅い マイクロコードで回った方が速かった – 高速ROMからのマイクロコー ド・フェッチ/ワイヤ制御 – ラッチ(レジスタ)か高速SRAM で作られた記憶 – 外からマクロ命令をちょっと 読んで、マイクロで回る – 細粒度並列性は マイクロコードとハードワイ ヤで実現 ベクトルマシン – ベクトル命令を1つ読んで、た くさん計算 - - 今 - - キャッシュが大きい – マクロ命令フェッチ,デー タ・フェッチ 遅くない スーパースカラ&投機実行 素敵 – でも、コア内に • 十分なデータと、 • スレッドが必要 GPU – ベクトル・アーキテク チャ – ベクトル・パイプが多い
  16. 16. CADRのハードウェア・アーキテクチャ解説書 和訳 CADRのハードウェア・アーキテクチャ解説書 MIT AIメモ, AIM 528 http://www.bitsavers.org/pdf/mit/cadr/AIM-528_CADR.pdf 私が和訳した http://www.takeoka.org/~take/ailabo/cadr/cadr-j.html LispとCPUハードウェアの機微を知りたい若者に さすがに、本当にちゃんと動いているだけのことはある (低レイヤな)若い人は読んだ方がいい
  17. 17. Lisp マシンのマクロ命令セットの説明 和訳 Lisp マシンのマクロ命令セットの説明 MIT のTom Knight氏の、 "The LISP Machine Macro-instruction Set." http://www.mirrorservice.org/sites/www.bitsavers.org/pdf/ mit/cadr/Knight-LISP_Machine_Macro_Instruction_Set- 1979.pdf 私が和訳した http://www.takeoka.org/~take/ailabo/cadr/knight-lispm- macroinst.html
  18. 18. りすぷ・しーんにゅある  Lispマシン・マニュアル一式 も読める http://www.bitsavers.org/pdf/mit/cadr/ しーんにゅある  和訳する気はない  Hackers’ dictionary も読もう  MIT Lispドキュメントを読む には 必須
  19. 19. URL CADRハードウェア和訳 http://www.takeoka.org/~take/ailabo/cadr/cadr-j.html Lispマシン マクロ命令解説 和訳 http://www.takeoka.org/~take/ailabo/cadr/knight-lispm- macroinst.html WAM論文 和訳 http://www.takeoka.org/~take/ailabo/prolog/wam/wam.html 実用Prolog入門(短い文書) http://www.takeoka.org/~take/ailabo/prolog/metakuta.html CRAY-XMP マニュアル 和訳 http://www.takeoka.org/~take/supercom/cray-xmp.html www.takeoka.org/~take/ www.axe.bz
  20. 20. 20 20世紀を回顧
  21. 21. 21 32KBのメモリでなにができるの?  往年の名機との比較 (偉い先生も、よく遊び & よく遊び) Apple ][ 8bit PC-8001 8bit PC-9801 16bit PIC32MX270 32bit LPC1114 32bit 年代 1977 1979 1982 2016 2011 CPU 6502 @1MHz Z80 @4MHz 8086 @5MHz MIPS @40MHz Cortex M0 @50MHz ROM 8KB 24KB 96KB 256KB 32KB RAM 4KB~48KB 16KB~32KB 128KB~640KB 64KB 4KB 整数BASIC: 6KB, BIOS+モニ タ: 2KB 浮動小数点 BASIC (拡張版M- BASIC) 浮動小数点 BASIC,モニタ MT- BASIC:21KB 通常 BASIC:16KB MT- BASIC:21KB 通常 BASIC:16KB 21世紀 2010年〜 20世紀 1980年頃
  22. 22. 22 32KBのメモリでなにができるの? ● GBのメモリとか、バカじゃないの ● 64bitポインタのほとんどが無意味な情報 ● 配列を整数インデックス(ベース+オフセット)で管理した 方がいいんじゃね? ● オフセットは 16bit? 32Bit? ぐらいでいいんでしょ ● GHz CPU、お前らアルゴリズムという言葉知ってるの? ● アルゴリズムが適正なら、CPUが極端に遅くてもできるこ とは多い ● オレは、1977年に○×をプレイするAIを TK-80上で作ったぜ ● TK-80: RAM 512Bytes ● CPU:8080 @2MHz
  23. 23. 23 高級言語マシン Alto Symbolics 3600 Mac初代 PIC32MX 270 年代 1973 1983 1984 2016 CPU bit slice (マイクロ・プログラム) 0.3MIPS Bit slice @5MHz〜 8MHz 68000 @5MHz 0.3MIPS MIPS @40MHz 1.5MIPS ROM (micro code) (micro code) 64KB 256KB RAM 128KB~512KB 〜2.3MB 128KB 64KB 16bit word 36bit word 16bit word 32bit word 21世紀 平成 20世紀 1980年代
  24. 24. 24 極小 Lispマシン (CPU はフツーのMIPSやARM (^^; )
  25. 25. 25 組込みマイコン用 独自Lisp実装 ● 2013年10月〜 ● 32bit組込みマイコンに、独自開発のLisp ● IoT時代に、Lispで ● Lispは安全(メモリを踏みつぶしたりしない) ● フィールドで、実機と対話的できる ● 開発環境がなくともデバッグ、調整ができる ● C言語で記述。ほぼいかなるマイコンでも動作 ● PIC32 ● 32bit MIPS core ● 秋葉原で200〜380円程度である。 ● PIC32MX270は、ROM:256K Bytes, RAM:64K Bytes を内蔵。 ● PIC32MX250は、ROM:128K Bytes, RAM:32K Bytes を内蔵。 ● PIC32MX220は、ROM:32K Bytes, RAM:8K Bytes を内蔵。 ● クロック周波数は40MHzで、1.56 DhrystoneMIPS。 ● LPC1114 ● ARM Cortex-M0 ● 秋葉原で110円程度である。 ● LPC1114FN28 は、ROM:32K Bytes, RAM:4K Bytes ● クロック周波数は50MHz(最大),内臓CR発信器で12MHzで使用。
  26. 26. 26 極小Lispマシン (PIC32) PIC32MX250 – 秋月で¥350円 – ROM:128KB – RAM:32KB – CPU速度:約1.5VaxMips(公称) 液晶: Aitendo 1.4inch, 128x64 dot 上下キーで、ワードを選択 – LispのSymbol tableから引いてく る • 一度入力したワードは、 補完よりはるかに速く入力可能 ● ケースは、100円ショップの クリップの入れ物
  27. 27. 27 極小Lispマシン (PIC32)PIC32 – ケースは、100円ショップ の クリップの入れ物
  28. 28. 28 極小Lispマシン(PIC32) 液晶はデカイが、解像度は 、同じ
  29. 29. 29 子供パソコンIchigoJam (LPC1114) ● ARM LPC1114 ● ROM:32KB ● RAM:4KB ● CPUクロック:12MHz ● (公称 最大50MHz ) ● PS/2キーボード ● NTSC画面出力 ● BASIC言語マシン ● IchigoJamでも、 ● 私のLisp,Basicが動く ● NTSC画面は無し
  30. 30. 30 極小Lispマシン (LPC1114) ● IchigoJamに近い ● カラーLCD ● PS/2キーボード ● ARM LPC1114 ● 秋月で¥110円 ● ROM:32KB,RAM:4KB ● CPUクロック:12MHz ● PIC32と同じLispが動く ● 機能的にはちゃんと動く ● Cスタック(機械語スタック)も少なく ● なかなか実用には厳しい感じ ● 用途によっては使える
  31. 31. 31 mintiaケースに入れたり(MIPS PIC32)
  32. 32. 32 ボードを作りました(2018.OCT.20)● Arduinoと同サイズ ● Arduino用のボードが使えるようにした ● Arduino言語は使わない ● C++風言語が嫌いだから ARM(LPC1114) MIPS(PIC32)
  33. 33. 33 Lisp Badge !?!!! ● 10th January 2019 ● This is a self-contained computer with its own display and keyboard, based on an ATmega1284, that you can program in the high-level language Lisp: ● Memory available: 2816 Lisp cells (11,264 bytes). ● EEPROM: 1024 Lisp cells (4096 bytes), allows you to save the Lisp workspace using save-image. ● the AVR version of uLisp Version 2.5 http://www.ulisp.com/show?1AA0 ● Processor: ATmega1284P ● Clock speed: 16 MHz. ● ATmega1284はしょぼい ● 偉い! http://www.technoblogy.com/show?2AEE
  34. 34. 34 Lisp Badge !?!!! ● キー配置がLisp的なのか、やや外しているのか… http://www.technoblogy.com/show?2AEE
  35. 35. 35 ボードを作りました ● PS/2キーボード使える ● IchigoJamに対抗www
  36. 36. 36 昔の機械 Apple ][, MZ80K, PC8001 (最初のパソコンらしいパソ コン) – 16KB メモリ (Apple][, MZ80Kは4KBからだっけ か? – (ROM 24KB: PC8001, MS BASIC入り) CPU: 6502@1MHz, Z80@4MHz – 4MHzのZ80は、Intel Core i7 2600Kの「100万分 の5」ぐらいの性能 • http://en.wikipedia.org/wiki/ Instructions_per_second による –10~15K命令/秒 \(^^;/
  37. 37. 37 極小マシンと言えど – RAM: 32KB vs 16KB ;勝った – ROM: 128KB vs ROM 24KB; 勝ってるwww CPU: 1.5Mips vs 15KIPS ; 百倍ぐらい速い – 15Kipsと 1Mipsの差は極めて大きい • SUN2 (0.8 Mips程度)と Z80では、できることの質が違いすぎ る メモリ総量に対して、CPUが高速過ぎる www – GCで、いくらメモリをなめても、人間の体感的には気づかない \(^^)/ – 他のリソースがしょぼすぎるwww PIO, ADCが Lispから触れるのは画期的だよ!
  38. 38. 38 デモ ap: 普通のappend aaa: クロージャが使える (set! aaa (let (z) (set! z 0) (lambda (x) (set! z (cons x z)))))
  39. 39. 39 デモ aaa: クロージャが使える (set! aaa (let (z) (set! z 0) (lambda (x) (set! z (cons x z))))) Lise>>(aaa 'a) (a .0) gc Lise>>(aaa 'a) (a a .0) gc Lise>>(aaa 'a) (a a a .0) gc Lise>>(aaa 'a) (a a a a .0) gc Lise>>z NIL gc Lise>>z NIL gc Lise>>(set! z 'qqq) qqq gc Lise>>z qqq gc Lise>>(aaa 'aa) (aa a a a a .0) gc Lise>>aaa closure-40D0 gc
  40. 40. 40 ユビキタスAI ユビキタス AI 時代が、近日、来る (当社比) – 俺たち、推論エンジン(Lisp,Prologハイブリッド)を作ってみたら、 超 成績いい! – ケータイの中で十二分に動作する センサの中に Lisp – PIO, ADCが Lispから触れるのは画期的だよ! – ADC, PIO の入力を、Lispで前処理 – Lispは安全(メモリを踏みつぶしたりしない) – フィールドで、実機と対話的できる – 開発環境がなくともデバッグ、調整ができる ケータイの中に推論エンジン バックエンド・サーバに、大型 知識ベース OSに、人工知能 搭載が普通の時代になるっ!!!
  41. 41. 41 極小Lispマシン(PIC32) MINTIAのケースに入れてみた ライントレーサを作ってみた
  42. 42. 42 付録
  43. 43. 0.1μF 0.1μF 330Ω TXD RXD + 470μF 2017/JUL/07 LCD, ADC, Motor Takep-M0, LPC1114FN28/102 Reset ROM write LCD-CS LCD-SCLK LCD-SDA LCD-D/C LCD-RES 300Ω VR LCD-LED AD5 motor-R2 motor-R1 motor-L2 motor-L1 0.1μF GND VCC PS/2 CLK PS/2Data
  44. 44. 44 極小Lispマシン (PIC32)PIC32 – ケースは、100円ショップ の クリップの入れ物
  45. 45. PIC32MX220F032Bのピン配置
  46. 46. -MCLR 1 N.C. PGED3 PGEC3 VSS U1TX U1RX VDD RB7 RB8 VSS VCAP + 10μF 0.1μF VUSB3V3 0.1μF 10Ω 10kΩ RXD TXD GND VCC PIC32MX220F032B/ PIC32MX250 TAKEP minimal Lisp Machine 2014/SEP/09 Shozo TAKEOKA AVdd AVss VBus D+ D- LCD-CS1 LCD-RES LCD-A0 LCD-SCK LCD-SDI LCD-VCC3.3v LCD-GND LCD-LED+ Programmer ConnectorLCDConnector SW$8000RB15 RB5 RB0 RB1 RB2 RB3 RB14 RB13 SW$4000 SW$2000 RB9 SW$200 SW$100 SW$80 ◎$80 ◎$2000 ◎$100 ◎$200 ◎$8000 ◎$4000 Reset
  47. 47. pic32 minimal Lisp Machine LCD Connector PIC32 Sym pin △1 CS1 RB0 4 2 RES RB1 5 3 A0 RB2 6 4 SCK RB3 7 5 SDI RB5 14 6 VCC(3.3 V) 7 GND 8 LED+ 9 RX U1RX 12 10 VDD VDD 13 11 RB5 12 TX U1TX 11 PIC32 Sym pin Mask RB15 26 $8000 RB14 25 $4000 RB13 24 $2000 RB11 22 $800 RB9 18 $200 RB8 17 $100 RB7 16 $80 Switch ◎$80 ◎$2000 ◎$100 ◎$200 ◎$8000 ◎$4000

×