日本CPU发展之路简单介绍

2010-4-30 Ray Reship

简谈日本CPU的发展道路
  
  近一段时间忙,没有时间写文章。其实是文章好写,资料难收集。不久前在网上看到一篇文章《尴尬中国芯:龙芯CPU的艰涩之旅》,感觉到龙芯CPU前途很不妙。正好自己的工作与CPU有些关联,正好轻车熟路写写日本CPU的发展。对照看看龙芯CPU为什么会陷入困境。说到日本的CPU,很多人会问,日本有 CPU吗?确实,我们日常接触的计算机基本都是wintel,CPU基本都是美国公司的。
  其实日本有很多种CPU,在中国也被广泛应用,只是我们很难看到它,被嵌入了,不象有个什么“Intel inside”的牌子。当然,在中国嵌入式开发领域,日本CPU的应用也比较少,低端的多为51、PIC、AVR系列,高端的则是ARM一统天下,总之是八国联军。我想大概是因为日本CPU的相关支持工具和文档资料大多用日文写的,一般中国人看不懂。相比之下,欧美的CPU就比较好接受。看起来,CPU这东西,自己的文化弱了,推广起来也比较困难。不过,在日本,日本CPU绝对是主流,从低端到高端。从我使用的情况看,比欧美系的CPU好用,功能全面集成度高。日本的CPU大概叫关起门来自己爽。
  
  谈CPU先要谈与CPU直接相关的基础产业——半导体。日本的半导体产业起步不算早。直到70年代初,日本半导体需要量的7-8成还需要依靠进口。当时中国正处于文化大革命,经济崩溃,知识分子被关牛棚,工农兵大学生和外行领导内行导致科研机构一片混乱。即使这样,日本当年还需要从中国进口半导体制造设备。
  这时候,日本的电电公社,现在NTT的前身,相当于中国电信,发挥了很大作用。电电公社坚决采购国产电话交换机,并坚持使用国产的半导体,组织协调日本的半导体企业协作攻关。反面则是电电公社搞垄断,高昂的电话初装费和软预算赤字财政。1976年,日本政府成立半导体的国家实验室,国家的力量进行攻关。国家战略的结果,使日本半导体生产技术达到了世界领先水平。
  
  国家扶持和计划,使日本半导体产业与美国有很大的不同。最大的特点是大而全,小而全,自产自销。在初期,半导体的生产几乎100%在本企业或本集团内消费了。即使现在,也有很大比例是在本企业本集团内消费。这与美国半导体企业基本外销很不相同。比如,日立生产的半导体,很大比例在日立集团内部消费了,如日立的家电、精机、重机、工厂等等。而Intel的半导体则很少自己用,绝大多数都卖给其它用户。原因是日本半导体的起点低,性能质量价格面并没有优势,只能自产自销,大而全小而全,发展半导体是作为国家及本企业集团的战略,而不是一时的经济效益。要经济效益还不如直接买美国的。
  
  日本的这种做法,引起美国的不满,认为这是计划经济违反了市场经济规律云云。日本人也颇不满,自己的电电公社虽然搞软预算赤字财政,毕竟还是企业。而美国的国防部则完全是软预算,完全不讲经济效益。就中国是市场经济的信徒,在日本半导体突飞猛进的时候,中国迎来了改革开放的春风,引进市场机制的葵花宝典,半导体产业就挥刀自宫了。同时自宫的产业还有很多。自宫的结果,使中国这近30年取得了世人瞩目的经济成就。欲练神功需要挥刀自宫,这是颠扑不破的真理。
  国家战略和计划的引领下,日本半导体生产工艺突飞猛进,但需要高超设计技巧的CPU却没有很大突破。中国经历了10年文革的摧残,1977年研制成功了专用的弹载16位CPU。美国的CPU在1970年代末期形成了Intel的86系和Motorola的68系CPU。两强争霸,都想扩大市场占有率树立事实上的标准,但又受限于产能不足。于是找到日本厂家,日本厂家以许可证方式生产与美国兼容的CPU,作为第二供货方,这是日本CPU的起步。
  
  日立承接的是Motorola的MC680X和MC68000,日立生产的MC68就叫HD68。NEC则承接Intel的86,形成V20、V30系的 CPU。日本没有与国际接轨,融入国际社会的心思,喜欢自定标准,自搞一套。当80年代初IBM PC风靡全球时,日本自搞了一个PC98。手机也是自成系统。这以中国不同,在中国与国际接轨是政治正确,雄心壮志早被阉了,想自立体系想都不敢想。当然,PC98最终没有抵抗住IBM PC,在几年前还是最终放弃了,但毕竟日本曾经奋斗过,很多事也是谋事在人成事在天,但奋斗的心不能死。
  
   1984年,作为日本国策的TRON项目开始实施。TRON项目是集计算机OS和CPU设计一体的大型计划。涵盖的目标非常广泛,从实时控制到桌面系统,从工厂自动化到商业应用,无所不包。目的要建立日本独立的计算机软硬件体系。即阻止外国系统对日本的渗透,又想在世界中树立日本的标准。
  
   1984年也是中国关键的一年。是年年底,通过了城市改革的决议,拉开了城市改革的序幕。这一年还是“鬼门关”,无论项目是否成功,这一年都必须下马停止。时隔20年后,许多项目才重新开始,或者再也没有可能开始了。这一年大概可以称为中国的“自宫年”。中国需要集中精力发展经济,改善生活。我们的目的是喝水,再也不能干挖井的蠢事了,这些“奇技淫巧”还是算了吧。
  
  作为TRON项目的结果。1987年,日立发布了H8/H16/H32三款CPU,分别是8位/16位/32位。其时日本产品在欧美市场上咄咄逼人,即便作为86和68系CPU的第二供货商,也有喧宾夺主侵夺美国原厂商市场份额的势头。这些引发了日美贸易摩擦,美国政府向日本政府施加压力,小胳膊毕竟没有扭过大腿。TRON计划被大幅度缩小,只限定在实时嵌入式领域。Intel和Motorola分别向NEC和日立提起诉讼,禁止它们再生产销售与86和 68系兼容的芯片。这些诉讼最后都在庭外和解了,作为和解的结果,H16由于酷似Motorola的68被放弃了,H32由于TRON项目缩小也被放弃了。H8虽然也大量承袭了68的设计,但总算被保留了下来。
  
   日本历史上有过多次失败,但雄心壮志从来就没有熄灭过。虽然有时必须认命,被外力宫去大半,但雄心不死,还有重生的机会。中国则精神上萎靡了,不用别人动手,就自宫了。即便有人劝说中国能行,但始终坚挺不起来。
  
  日立的H8虽然是8位的CISC设计,随着时代发展,逐步扩展到16位和32位。并在此基础上发展了RISC型的SuperH系列SH1/SH2/SH3 /SH4。SH1/SH2定位于实时控制领域,SH3/SH4则定位于信息处理。NEC则发展了自己独自的78和V850系列。这些CPU都定位于嵌入式领域,避免与美国直接冲突。嵌入式领域市场庞大并被细分,手机、游戏机、汽车、各种家用电器、各种生产装置……,这些领域都是日本的强势领域。这些东西和我们日常生活密切相关,但我们往往觉察不到它们里面计算机的存在。在嵌入式领域对CPU的性能要求并不很高,很难出现赢家通吃的局面。日本CPU的最高主频目前还没有超过1GHz,NEC的V850的一款CPU号称是世界上主频最低的32位RISC CPU,只有20MHz,但却有着极低的功耗。嵌入式领域性能不是主要因素,有自己的特色就可以在市场中找到定位点。
   嵌入式应用需要丰富的接口,光CPU远远不够。日本的CPU一大特点是集成了丰富的接口,A/D、D/A、PWM、定时器/技数器、各种通信协议、图象声 音的编解码器、Flash、SRAM甚至还集成了大容量的DRAM。包含接口的不同,形成一个完整的系列,根据具体应用的需要选择具体的CPU型号。往往 一个单片就可以构造一个完整的应用系统。        软件系统虽然TRON被大幅度缩小,成了uITRON,TRON前面的uI分别代表微型和工业的意思。小有小的好处,正好适应这种资源严重受限的嵌入式应 用环境。WindowsCE和Linux则庞大笨重,于是uITRON占了日本近一半的市场份额。uITRON只是一个标准,并不是具体实现,具体的软件有好几种,其中也有免费 开源的uITRON。当然这些日本CPU也能运行Windows CE和Linux。据说SH3是世界上第一种运行Windows CE的CPU。        软件和硬件系统的结合,使日本的CPU在日本市场上成为主导,外国CPU占的市场份额很小。这与中国不同,中国则是被八国联军占领了。日本的出版教育界也 功不可没。有名的CQ出版社出版的电子杂志详细介绍这些本国CPU用法和特点,还免费赠送这些CPU的实验板。还免费提供这些CPU的软核,在FPGA中 实现自己的系统,用于研究和教学。学生时代的教育就使用本国的CPU,工作后自然而然就使用本国的CPU。中国的教育原来是Z80,后来是8051,于是 学生毕业后就用这些外国CPU。        国家战略、科研、教育、产业相结合,使日本CPU产业从无到有,由弱到强,独树一帜。中国这四个方面相互脱节,国家战略是建立市场经济体制,不惜摧毁自己独立的科研和产业体系。科研面是单打独斗,在整个国家当作点缀存在。教育是面向世界,为留学和外企培养人才。产业则基本被卖掉了,外资企业挑大梁。这样的 环境中,发展自己的CPU产业何等艰难。聪明如陈进的,一开始就认为事不可为,打磨芯片交差,科研经费落袋。方舟则是在中途醒悟,还是搞房地产来钱快。就 剩下愚公龙芯继续奋斗,但不知道红旗能打多久。
 

阅读全文>>

标签: 日本CPU发展之路简单介绍

评论(0) 浏览(1835)

重新在Debian下编译mldonkey(LS_Pro)

2010-4-29 Ray Linux

出掉了LS1,只好把LS Pro拿出来当下载机了。

LS Pro是V1版,现成的Custom_uboot 是for V2的,硬件有少许的不同,启动时V1的硬盘参数是1:1,V2的参数是0:1,需要修改默认的UBoot env vars,我修改以后还是不能引导,一怒之下刷回stock_uboot。

其实仔细想下不一定非要刷Custom_uboot才可以运行Foonas_EM_Kernel,用stock_uboot同样可以实现一个危机处理系统。

在stock_uboot下进入官方的EM模式,用java程序 ACP Commander 清空root密码,以root权限telnet进去,即可用fdisk分区,然后插上U盘,将备份的系统文件分别解压在对应的dev/sda,dev/sdb即可。

最大的好处是可以自由分配系统空间大小,后续安装软件再也不怕空间不足了!另外系统出问题不用拆机取硬盘,直接在EM模式下搞定。

现在已经安装了debian,运行mldonkey正常,偷个懒把之前的mldonkey配置文件替换进去,发现不能启动了,一直在Resolving

还是以前的毛病,只有安装最新版的mldonkey才能解决。

正好有以前编译完成的文件夹备份,直接把文件夹复制到Lspro里面去,解包,make install,结果报错。无奈从头做起。

./configure之后提示zlib等一大堆库文件没有安装,看来得安装编译环境先。

apt-get install gcc g++ make libc6-dev
apt-get install libgd2-dev libmagic-dev zlib-dev bzip2-dev

发现源里面没有zlib-dev的安装包,只好自己下了个zlib-1.2.3.tar的源码包编译安装。

编译安装后继续./configure ,这下搞定了! 
Configuring MLDonkey 3.0.1 completed.

Network modules:
- eDonkey enabled (eMule SUI enabled)
- BitTorrent enabled
- FileTP (aka wget) enabled
- Fasttrack enabled
- Gnutella disabled – unmaintained
- Gnutella2 disabled – unmaintained
- Direct Connect disabled
- Open Napster disabled – currently not usable
- Soulseek disabled – currently not usable
- OpenFT disabled – currently not usable

Core features:
- zlib (required) enabled
- threads enabled
- bzip2 disabled
- iconv enabled
- libmagic disabled
- graphical stats disabled

Compilers:
- Ocaml version 3.11.1
- gcc version 4.1.2
- g++ version 4.1.2

Now execute ‘make’ to start compiling. Good luck!

To compile a static code execute: make mlnet.static
To produce a release tarball execute: make release.mlnet.static
To clean the build directory execute: make maintainerclean

Compiling CryptoPP.cc can take several minutes, on slow machines up to half an hour.
运行make报错!

想了一下,删除了之前编译的目录,重新去http://mldonkey.sourceforge.net/ 下载代码,解压后执行./configure,这次提示 Checking Ocaml compiler.
——————————–
checking for ocamlc.opt… no
checking for ocamlc… no
checking for camlp4… no
******** Objective-Caml 3.11.1 is required *********
******* Check http://caml.inria.fr/ ********
Do you want this script to try to download and install ocaml
LOCALLY in mldonkey directory ?
当然选Y了!

又是漫长的过程,抓狂

点击查看原图

等待一个多小时,终于configure完毕。接着开始编译,幸好偶早有准备,在screen里面运行,省却N多烦恼事。

早上起来已经编译完了,开始make install安装,大概花了30分钟,搞定。 

点击查看原图

阅读全文>>

标签: 重新在Debian下编译mldonkey(LS_Pro)

评论(0) 浏览(2655)

五一前的絮絮叨叨

2010-4-27 Ray Diary

清明刚过,五一就跟着来了。

今年的五一沾了世博的喜气,偶所在的民营企业也彻底响应了一次国家政策,让俺实实在在的高兴了一把。

前一段时间一直被HW的项目折磨着,手板机壳调试死活不达标,最后还是主管老大出手相救得以顺利搞定,否则丢了这个项目客户发飙老大更要发飙,后果不是一般的严重。

不知不觉暗室灯泡居然四个全挂了,黑咕隆咚白天换机器都忒不方便,估计晚上测试那哥们更得郁闷了。ETS总是一副不紧不慢的态度,我的要求并不高,五一前能把这事搞定就谢天谢地。

有帖子说6月13号河南新乡地震。沧海桑田世事无常,当年我念书的城市啊,居然就要地震了!不过立马有地震局专家出来辟谣,说越是预报得精确越是不可信;一边是民间预报一边是Z.F辟谣,党国威信尽丧,能怪谁。

博客访问速度是越来越慢了,编辑下日志得等半天。搞不明白这个米国主机到底是怎么回事,又没被墙又没当机延迟N高,不是看在不用备案的份上早就换空间了。

五一行程未定。

时间不早,且去睡觉。

转俩图,武汉 4月24号拍摄

点击查看原图 点击查看原图

阅读全文>>

标签: 五一前的絮絮叨叨

评论(0) 浏览(1956)

phpdisk上传文件大小限制

2010-4-17 Ray Linux

在/etc/php5/cgi/php.ini中,设置post_max_size(表单最大值)和upload_max_filesize(单个文件最大值),上传文件的大小取决于两者中的最小值。

设置完毕后重启http服务:/etc/init.d/lighttpd force-reload

over

P.S:在网盘的首页设置里面不能使用英文的’字符,否则立马出现数据库查询错误 Parse error: syntax error, unexpected T_STRING, expecting ‘)’ in /netdisk/system/settings.inc.php on line 42

阅读全文>>

标签: phpdisk上传文件大小限制

评论(3) 浏览(3771)

成功给LS-Pro安上Gnome桌面

2010-4-14 Ray Linux

点击查看原图 点击查看原图

阅读全文>>

标签: 成功给LS-Pro安上Gnome桌面

评论(2) 浏览(2052)

xauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add" command

2010-4-13 Ray Linux

启动vnc4server之后出现如下错误提示:LSPPC-Lenny:~# vnc4server
xauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add" command

New ‘LSPPC-Lenny:1 (root)’ desktop is LSPPC-Lenny:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/LSPPC-Lenny:1.log

可以正常进入X界面,但是xauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add" command总归让人不爽,研究一下怎么去除。

查了一下资料,发现跟网络配置有关系,在webmin的"网络配置"里选择"主机地址",然后添加主机名为LSPPC-Lenny,IP地址为127.0.0.1,确定保存,搞定。

点击查看原图点击查看原图

看了一下etc目录,下面生成一个hosts文件,里面内容如下图所示:   

点击查看原图

其实只要在etc下面新建一个hosts的文件,里面内容为127.0.0.1     LSPPC-Lenny就可以了。

 

阅读全文>>

标签: xauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add"

评论(0) 浏览(4979)

X Windows on Linkstation(Gnome)

2010-4-13 Ray Linux

在终端机上成功搞定VNC连接X界面之后,打算尝试在NAS上也安装X界面,这样折腾起来就更爽啦!想着心里就倍儿高兴
NAS之前已经成功破解uboot并安装好2.6kernel的debian系统,现在要做的就是先安装好gnome需要的X组件。
apt-get install gdm gnome-core x-window-system-core ttf-arphic-uming
ttf-arphic-uming 是一个可以同时支持简繁体的免费字体,我暂且用它来使图形界面下的中文正常的显示。
喜欢KDE界面的可以这样安装:apt-get install kdm kde-core kde-i18n-zhcn x-window-system-core ttf-arphic-uming
偶习惯Gnome了,呵呵。
嗯,看了一下,需要下载260多MB的包,安装后大概占用800MB的硬盘空间,NAS的硬件不够强悍,看来这个过程需要等待N久了。

点击查看原图

等了N久终于完成下载过程,开始安装,过程也是漫长的,中间冒出一提示:
点击查看原图

不管它,继续下面安装过程。
等待啊等待,12点钟偶该睡觉了,解包安装过程还在持续,早点忘记开了screen来运行安装过程了,只好开着笔记本让它慢慢安装去。
早上醒来,发现已经安装完毕了!

白天要上班,晚上回来了继续折腾~~

下面该安装VNCserver了,这个过程也简单:apt-get install vnc4server
等待片刻,安装成功!
然后直接运行vnc4server,提示需要建立密码,按提示新建就可以了。
然后用VNC viewer连接我的NAS,顺利连接上去,不过却没有桌面,郁闷啊郁闷!

点击查看原图

看一下log,发现问题了:

点击查看原图

原因:vncserver默认寻找的X系统的字体路径在/usr/X11R6/lib/X11/fonts/下,而我的NAS貌似没有按这个默认路径存放fonts文件。
郁闷的是我也不知道NAS到底吧fonts文件丢哪里去了,不过不要紧,偶来找一下:
LSPPC-Lenny:~# find / -name fonts
/etc/X11/fonts
/etc/fonts
/mnt/webserver/discuz/uc_server/images/fonts
/mnt/webserver/discuz/images/fonts
/root/.gnome2/share/fonts
/usr/share/doc/console-data/fonts
/usr/share/X11/doc/fonts
/usr/share/fonts
/usr/share/xulrunner-1.9/res/fonts
/usr/lib/xorg/modules/fonts
/usr/local/share/fonts
欧了,/etc/X11/fonts就是fonts的路径了!

现在来做个链接搞定它:
LSPPC-Lenny:~# mkdir /usr/X11R6/lib
LSPPC-Lenny:~# cd /usr/X11R6/lib
LSPPC-Lenny:/usr/X11R6/lib# ls
LSPPC-Lenny:/usr/X11R6/lib# ln -s /etc/X11 X11
重新运行vnc4server,还是不能显示桌面!

突然想起NAS是没有显卡之类的硬件的,再安装个xserver-xorg-video-dummy试试:
LSPPC-Lenny:~# apt-get install xserver-xorg-video-dummy
再在.vnc/xstartup里面添加一行:gnome-session &
运行vnc4server,这次有进展了:
点击查看原图

嗯,好歹显示图形了,兴奋啊!要知道这可是NAS啊~
点了continue,NAS的硬件就是不行,等待半天,终于出现了偶朝思暮想的X界面,兴奋一下下!

点击查看原图

 看看表,不行,时间不早了,偶洗洗睡了,明天要上班的~
 

阅读全文>>

标签: X Windows on Linkstation(Gnome)

评论(1) 浏览(2547)

用VNC远程登陆ubuntu的X桌面

2010-4-11 Ray Linux

终端机装了ubuntu之后就一直在用putty+winscp远程登录ubuntu,用命令行来操作和配置Ubuntu系统。
不过老是感觉少了点什么,觉得图形界面也不错,尤其是在外面访问家里电脑的时候,这个想法更加强烈。

试了一下,可以用vnc4server来搭建VNC的服务器,客户端就用ultravnc,当然其他的VNC客户端也是可以地!ultravnc下载地址http://www.uvnc.com/download/1082/1082full.html

在ubuntu上安装vnc4server:sudo apt-get install vnc4server
安装完毕,先生成一个passwd文件:vnc4passwd
在$HOME/.vnc目录下面生成一个passwd文件,($HOME/.vnc是一个vnc4server的关键目录。)
开启vnc4server:vnc4server

会得到:desktop的名称,这个名称在客户端连接的时候用到。如果是desktop:1,在客户端连接的时候就填写:ip:5901,依此类推,如果是Desktop 2,在客户端的时候填写:ip:5902….
首次运行会提示生成了.vnc/xstartup文件,这个文件里面包含着登录启动X时的一下配置。

现在从UltraVNC登录,可能得到一个比较简单的窗口,因为VNC4Server缺省启动的WM是twm,如果希望启动gnome,需要改动.vnc/xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 1024×768+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session &
这样登录的时候,会自动启动gnome
点击查看原图

阅读全文>>

标签: 用VNC远程登陆ubuntu的X桌面

评论(0) 浏览(3566)

Hardware performance of HP T5000 running under ubuntu

2010-4-7 Ray Linux

偶然跑到openwrt网站去逛逛,发现有个coubenchmark的项目,偶也来测试一下跑论坛的HP T5000的CPU性能。
源码在这里:http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=f71735cf445f1ff3e3b464853f4f4303bf6f4078
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>

#define VERSION_STR "v0.6"

// This is the overhead of calling gettimeofday() 2 times
double overhead = -1;

double begin_secs = 0;
double real_get_seconds() {
struct timeval tv;
double total;

gettimeofday(&tv, NULL);
total = (double)tv.tv_sec;
total += ((double)tv.tv_usec)/(double)1000000.0;

//printf("Secs: %d / Usecs: %d / FSecs: %f\n", tv.tv_sec, tv.tv_usec, total);

return total;
}

double get_seconds() {
if (begin_secs == 0) {
// First call
begin_secs = real_get_seconds();
}
return (real_get_seconds() – begin_secs);
}

double run_float_bench() {
double secs;
double begin = get_seconds();
int i;

double nb=0;
for (i=0;i<300000;i++) {
nb *= i;
int n = i >> 10;
nb /= n;
}

double end = get_seconds();
secs = end-begin;
printf("Time to run float bench: %.2f[secs]\n", secs);

return secs;
}

double do_run_memory_bench() {
double begin, end;
int i;
int* buf;
int len, index;
double secs;

begin = get_seconds();

len = (1<<21)/sizeof(int); // 2Mb
buf = malloc(len*sizeof(int));

// Write to memory – sequential
for (i=0;i<len;i++) {
buf[i] = i;
}

// Read memory – sequential
for (i=0;i<len;i++) {
int a = buf[i];
}

// Read memory – random
for (i=0;i<len;i++) {
index = (i*23)%(len/2);
int a = buf[index];
}

// Write memory – random
for (i=0;i<len;i++) {
index = (i*23)%(len/2);
buf[index] = i;
}
free(buf);

end = get_seconds();
secs = (end-begin);

return secs;
}

double run_memory_bench() {
double secs = 0;
int i;

for (i=0;i<10;i++) {
secs += do_run_memory_bench();
}

printf("Time to run memory bench: %.2f[secs]\n", secs);

return secs;
}

#define NBD 9009
double run_compute_e() {
double begin, end;
double secs;

begin = get_seconds();

int N=NBD, n=N, a[NBD],x;
while(–n) {
a[n]=1+1/n;
}

for(;N>9;) {
for(n=N–;–n; a[n]=x%n, x=10*a[n-1]+x/n) {
}
}

end = get_seconds();

secs = (end-begin);
printf("Time to run computation of e (%d digits): %.2f[secs]\n", NBD, secs);

return secs;
}

double run_compute_pi() {
double begin, end;
double secs;
int i;

begin = get_seconds();
//printf("Begin: %f\n", begin);

for (i=0;i<10;i++) {
int a=10000,b=0,c=8400,d=0,e=0,f[8401],g=0;

//printf("i:%d\n", i);
for(;b-c;) {
f[b++]=a/5;
}

for(;d=0,g=c*2;c-=14,e=d%a) {
for(b=c;d+=f[b]*a,f[b]=d%–g,d/=g–,–b;d*=b) {
}
}
//printf("Mid: %lld\n", (get_seconds()-end));
}

end = get_seconds();
//printf("End: %f\n", end);

secs = (end-begin);
printf("Time to run computation of pi (2400 digits, 10 times): %.2f[secs]\n", secs);

return secs;
}

int main() {
printf("This is CPU and memory benchmark for OpenWRT "VERSION_STR". This will then take some time… (typically 30-60 seconds on a 200MHz computer)\n");

double begin = get_seconds();
double end = get_seconds();
overhead = (end-begin)*1000000;
printf("Overhead for getting time: %.0fus\n", overhead);

// Nb 1
double sec_mem = run_memory_bench();

// Nb 2
double sec_pi = run_compute_pi();

// Nb 3
double sec_e = run_compute_e();

// Nb 4
double sec_float = run_float_bench();

printf("Total time: %.1fs\n", (sec_mem+sec_e+sec_pi+sec_float));

time_t t = time(0);
struct tm ti;
localtime_r(&t, &ti);
printf("\nYou can copy/paste the following line in the wiki table at: http://wiki.openwrt.org/HardwarePerformance\n");
printf("|| %04d-%02d-%02d || ”Author” || %.1fs || %.1fs || %.1fs || %.1fs || " VERSION_STR " || ”OS” || ”DeviceModel” || ”CPU model” || ”CPU Frequency” || ”LinkToHwPage” ||\n", (ti.tm_year+1900), (ti.tm_mon+1), ti.tm_mday, sec_mem, sec_pi, sec_e, sec_float);

return 0;
}

 

用记事本把源码保存为c扩展名的文件,偶保存为openwrt_cpu_bench_v06.c。
编译需要gcc环境,没有的话就apt-get install gcc安装即可。
开始编译root@ubuntu-server:/mnt/hda/share# gcc -o cpubench openwrt_cpu_bench_v06.c
很快,一秒钟不到就搞定了,目录下已经生成cpubench文件了
很好,现在开始运行一下:
root@ubuntu-server:/mnt/hda/share# ./cpubench
This is CPU and memory benchmark for OpenWRT v0.6. This will then take some time… (typically 30-60 seconds on a 200MHz computer)
Overhead for getting time: 1us
Time to run memory bench: 2.27[secs]
Time to run computation of pi (2400 digits, 10 times): 2.84[secs]
Time to run computation of e (9009 digits): 4.01[secs]
Time to run float bench: 0.01[secs]
Total time: 9.1s
You can copy/paste the following line in the wiki table at: http://wiki.openwrt.org/HardwarePerformance
|| 2010-04-06 || ”Author” || 2.3s || 2.8s || 4.0s || 0.0s || v0.6 || ”OS” || ”DeviceModel” || ”CPU model” || ”CPU Frequency” || ”LinkToHwPage” ||

阅读全文>>

标签: Hardware performance of HP T5000 running under ubuntu

评论(0) 浏览(2634)

给路由器装上debian

2010-4-5 Ray Router

点击查看原图 点击查看原图

阅读全文>>

标签: 给路由器装上debian

评论(2) 浏览(3131)

Powered by emlog 京ICP备05005575号