发信人: lmy@cis_nctu (Daemon of Andromeda), 信区: programming
标 题: Re: 大发现!! FORTH 无所不在!!! :))
发信站: 交大资科_BBS (Apr 25 09:30:44 1994)
转信站: cis_nctu
==>[Author]: william@cis_nctu (C++/ASM/Win Master) on board 'programming'
> 对时序要求如此严格的场合, 应该都是用 asm 吧? 毕竟高级语言也不是万能的。
> 即使是 Ada, 在做 embedded system 时还是要动到 asm。
不见得, 我以前的论文是有关语音辨认的辨认速率问题. 再怎么要求 real-time也没有人会想用 asm. 除非是 critical function, 像我学弟就 K了 DSP32 的 asm,拼了命写了一个. 在没有良好的发展系统上, 这样做非常痛苦. 但若是有良好的发展系统, 相信我, 语音辨认的 algorithm 用 asm 去 implement 一样不是一件很聪明的作法. 即使我们最新的方法以将浮点运算数目从 1百多万/每字 降至 数万余/每字,用 DSP32 仍只能勉强 real-time, 但仍然不会去尝试用asm 来 implement 全套系统.目前仍然是用 该芯片的 C cross-compiler. 但其compiler最佳化不是很好. 如果能有高级语言能达成速度不输 asm, 那不是大家的希望吗?
> 这是自然的, 用各 CPU 的母语来写程序, 自然最好。没听过在 Lisp machine 中的
> C 程序能拼过 Lisp 的。
> 问题是:若是在非 Forth chip 里, Forth 该如何避免这种 overhead? 我很感兴趣。
我的意思不是这样比, 我的意思是用同样的频率 (这代表了目前的芯片及高频电路技术), 以及同样的 BUS 架构 (使I/O & memory 传输速率站在同样的基础), 以各种高级语言, 分别用最适合该语言的 CPU 来解决同样的问题. 我想只要不是人工智能的题目, 可能很难有拼得过 FORTH 的. 除非有特别为该语言最佳化的 cpu. 而 FORTH却早已使用这种方式. 而该芯片之简洁, 令人赞赏, 只用了 8000 余 gates.
> 这怎么能算是「看不见的惩罚」? 要不要 inline 全看 programmer, 这是「看得见」
> 的。即使用 macro assembler, 也会碰到用 CALL 或是 MACRO 的抉择。
> 在 Forth中大量动到 threaded code, 还不是会遇到传统子程序的 overhead 问题?
> 这是宿命。
在传统 asm 中, 你可以用 call, ret. 只须付出指令频率与 instruction queue prefetch cycles. 的代价. 为了减少 size (very critical in small system),这是可以容忍的. 但高级语言的 call/ret 的 overhead, 相信您很清楚, 所以才会有inline, 但 inline 就不可避免的增加 size. 我所谓的看不到是你在未编译前无法知道会多了多少 size/speed overhead. 而 FORTH chip 的 call overhead 已同于asm (只需本身频率与指令预取频率). 而 ret 在90%以上的case, 时间为0. (已与目前的指令 concurrent executed). 黄大一的 FORTH 83一书中有提到一个 bench mark第一代的 NOVIX 用 8MHz clock 达成 20 MIPS. (可见有极高的比例达成 3 instructions concurrency) 若再能加上 flow transfer prediction instruction prefetch, 则call 的 overhead 可能近乎可忽略不计.
>> forth 芯片的 word (可看成 function) 的进出可说几无 overhead. 用那样的芯片写
>> 汇编语言 (就是 forth), 在同样的频率下, 我想没有其它芯片的高级语言可以及得
>> 上它的速度.
> 这是自然。哪天出了一个 Ada chip 来发展 embedded system 的话, 他们也是可以
> 如是说。
我没学过 Ada, 不了解其架构与堆栈框建置. 但 C 至今为何没听说 (可能是我孤陋寡闻) 类似的商品化 CPU, 我想可能有根本上的困难.
> 对了, 哪儿可找到 NOVIX 的数据? 有点兴趣...
我大学时有过几张影印资料, 以上所写的就是根据我对它的记忆. 如今不知能否找得到. (没想到 FORTH 在今天会引起讨论, 我想 IEEE 的 boot firmware draft功不可没). 可能可以向网友所提到的 FORTH 协会索取.
昨天回家找到了陈封以久的简介资料. (可见有多久没玩 FORTH 了)FORTH 期刊, 1985年 第6期10月号. 有些数据记错了, 应为只用了 4000 余 gates.RISC 特性, hardwire control (无 microcode), 可同时执行 1~5 primitives instructions. 并且 on-chip 有 I/O port (可做为单芯片控制)
以下再补充一些 FORTH 的特点. (我不称其为优点, 免得有人抬杠)
以 FORTH 的 virtual machine 的架构而言, 人人都有能力可以设计 engine chip (好不好另一回事), 有谁可以独力设计 80386 的吗? 另外, 今天若出了任何一种 CPU, 我有信心, 在短期内在其上以 Forth 83 Meta-compiler 建构出一套FORTH 系统出来. 对其他的语言, 可能就得等待软件商的支持. FORTH 让你有完全掌握系统的能力.
下次各位在 SUN 上按了 STOP-A 之后, 用 n 进 FORTH interpreter, 别忘了用 words 看有那些 words 可用. 并且用 banner 看一看 system logo.
---------------地山谦, 亨, 君子有终
===================================
正文
Forth 这个东西(11)2005-08-05 15:37:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/forth/3478.html
阅读(3309) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论