taoqian's profiledifferent life, differen...PhotosBlogListsMore Tools Help

Blog


    January 20

    小型技术公司如何成功

    观察了合作伙伴Greenfield,觉得它还算不错的创业公司,生存了5年,现在产品也出货了,它在美国不过40来人,印度20个人,美国写软件的只有6人而已。剩下的大部分是ASIC和Hardware.
    从它的员工来看,这种小型技术公司从创业到成功需要满足下面这些条件:
    1>要找有经验的员工。准确地说,是找创业伙伴。只有6个人写软件,连续写了四年,写出这么一个复杂的系统,还是非常不简单。其实没有经验的人对于一个创业型公司是没有什么意义的,让更多有经验的人分享股票,分享权力才是正确的。像Smita这样的印度工程师都有6年左右的产业经验。
    2>善借外部资源。如果客户有了不一样的需求,譬如从Linux到Vxworks的port,如果公司内部没有员工能完成,就应该外包出去,快速完成客户的需求。
    January 17

    Broadcom/Greenfield ASIC比较

    这些是结合项目得出来的,随着项目的深入,我会不断的往里面添加东西。以后还会有其他的专题:如Vxworks/Linux比较,ACPV3/ZebOS比较,TCP/IP stack之类的。
     
    我熟悉的Broadcom chip是5650这类面向Enterprise应用的,跟Greenfield这种面向Telecom的当然存在很多不一样的地方,把它们并列比较并不合适,因为很多设计的出发点都不同,不过,比较它们还是有所收获的。
     
    1.Greenfield所有的查找动作都基于TCAM,如Bridge,Route,ACL,QoS,这样的好处是table的容量可以没有限制。而Broadcom 5650没有外接TCAM,Bridge和Route都是片内RAM,容量大小已经固定好了,而ACL这类东西放在FFP里,实际应用当中,往往会发现容量根本不够。
     
    2.Greenfield看起来更像软件一些,Broadcom感觉是从硬件的角度设计考虑ASIC.Broadcom的flowcontrol非常固定,l2 lookup->l3lookup->FFP(ACL)----〉buffer--->Egress(multicast replication).而在Greenfiled中这些箭头(指针)是可配的,也就是说不同的stage可以比较自由的组合,像搭积木一样。
     
    3.在CPU向Broadcom发包的时候,可以向多个port同时发,只要在DMA里填充bitmap就行了;但是如果是Greenfield chip,一次只能向一个port发,这不能不说是一个缺点.
     
    4.关于interface manger
    interface这个概念很重要,譬如l2 interface, l3 interface, vlan interface, mpls interface。在物理上,这些interface可能对应于一个ethernet port,也可能对应于一个router port,也可能对应于VLAN/MPLS.在逻辑上,这些interface需要挂到协议栈上去,譬如挂到一个tcp/ip stack上去,不同的interface可以挂到不同的栈上去。另外,这些interface可以UP,也可以Down.所以系统中需要一个数据结构来存储这个structure,叫做interface manager.
    在greenfield中有一个aspiface来维持,不过我们没有用它。而是用了IPI的hsl_ifmgr.
    January 15

    与环境无关

    有一次坐出租车,我跟同事在车上发牢骚,最后出租车司机发话了:你们懂什么,这个社会太不公平,我今年51岁,交大研究生毕业,前几年下岗,为了养儿子,我只好出来开出租。
    听罢,我大跌眼镜,不知道说什么好。
    第二天我把这件事情跟我们leader讲起,他说:有的人必须在一定的环境里才能成功;只有极少数人才能不依赖于环境,他们的成功是不可阻挡的。
    是啊,环境一般都是不好的:干活的人手不够,客户要求过分,项目schedule不合理,供应商太烂,老板待人不公平。
    人都是有情绪的,或者说有想法的,但是如果成天埋怨环境,会慢慢偏离当初自己设定的方向的。
    认准自己的目标,尽力而为,其实人是替自己打工的。
    不要因为环境的缺点而放弃了自己的努力。
     
    January 10

    关于PCI的疑问

    一直以为自己对PCI很熟悉,不过今天碰到的几个问题却让自己没有信心:
    1>PCI的configuration space里有intrrupt line和intrrupt pin.软件怎么用它呢?
    答:在BIOS(BSP)里面根据板子来写这个域,到了OS里PCI driver会根据intrrupt line来做intconnect把这个PCI设备挂到中断上去。这样实际上保证了OS和BSP的独立。
     
    2>PCI 的space有mem和IO两种,当然了对于x86平台而言,IO操作可以通过outl和inl来完成。但是对于Power PC和MIPS来说,怎么办呢?
     
    (阿土不是很有信心的)答:对于后两种平台,也是map到memory上去吧,最后也是读写memory,只不过要uncached的
     
    3>PCI的mem和IO操作能支持byte读写么?
    我现在还不能回答。

    Computer Organization&Design读书笔记之第三章(2)

    caller和callee对于寄存器的用法
    1>参数通过$a0-$a1来传递
    2>在程序刚开始的时候,要在stack里保存$ra,被程序使用的$s0..寄存器,不必保留$t0等暂时寄存器;当然了,如果是leaf程序就不必保留这些$ra了,如果程序不用$s0,也不必保留这些寄存器。
    3>在程序结尾的时候,从stack里弹出$ra,$s0等。
     
     
    阿土说:这只是一个惯例,还跟compiler以及某些优化有关。
     
    January 08

    Computer Organization&Design读书笔记之第三章(1)

    Computer Organization&Design主要以MIPS为例讲述了计算机体系结构,涵盖了指令集(第三章)、算术单元(第四章)、Datapath(第五章)、Pipeline(第六章)、Cache(第七章)、BUS等外设(第八章)、多处理器(第九章)
    第一章和第二章过于平庸,不谈。
     
    第三章以MIPS为例讲述了RISC指令集。
     
    RISC的主要特点是:指令等长(32bit)、load-store结构(add等运算不能直接操作memory)、寻址模式有限(不像x86那么繁琐)、指令数少。
     
    先讲寄存器:
    MIPS有32个寄存器
    $s0-$s7 call子程序的时候保留
    $t0-$t9 暂时寄存器,call子程序的时候不保留
    $zero 0寄存器,就是0
    $a0-$a3 参数寄存器,传递参数
    $v0-$v1 函数返回值的时候用
    $sp,栈寄存器
    $fp,frame pointer,在子程序里的时候,局部变量放在栈里,可以用$sp为基地址来访问,但是因为$sp经常变化,这样同一个变量在不同的时候有不同的offset.而$fp则是固定的。
    $ra,保存返回地址
    $at,目前不知道何用。
    这32个寄存器在机器码用0-31来代替,占位5bits
     
    指令分讲
    1>add
    add $s1,$s2,$3     #$s1=$s2+$3
    格式
    0(op 6bits)+18(rs 5bits)+19(rt 5bits)+17(rd 5bits)+0(shamt 5bits)+32(funct 6bits)
    其中18、19、17分别代替$s2、$3、$1,op和funct的0/32表明这是add运算,shamt是给位移运算用的
     
    2>sub
    sub $s1,$s2,$3    #$s1=$s2-$s3
    格式
    0(op 6bits)+18(rs 5bits)+19(rt 5bits)+17(rd 5bits)+0(shamt 5bits)+34(funct 6bits)
    其中18、19、17分别代替$s2、$3、$1,op和funct的0/34表明这是sub运算
     
    3>lw load word
    lw $s1,100($s2)    #$s1=Memory[$s2+100]
    格式
    35(op 6bits)+18(rs,5bits)+17(rt 5bits)+100(地址,16bits)
    其中35表明它是load,18是$s2,17是$s1,100是offset,offset必须是常数,范围在-2^15~2^15-1之间
     
     
    4>sw store word
    sw $s1,100($s2)    #Memory[$s2+100]=$s1
    格式
    43(op 6bits)+18(rs,5bits)+17(rt 5bits)+100(地址,16bits)
    其中35表明它是store,18是$s2,17是$s1,100是offset
     
    5>beq branch on equal
    beq  $s1,$s2,100  #if($s1==$s2) goto 100,pc=pc+4+100
    格式
    4(op 6bits)+17(rs,5bits)+18(rt 5bits)+25(地址,16bits)
    其中4表明它是beq,18是$s2,17是$s1,25是offset,这个offset是以pc+4来扁移的,也有-2^15~2^15-1的限制
     
    6>bne branch on not equal
    bne  $s1,$s2,100  #if($s1!=$s2) goto 100,pc=pc+4+100
    格式
    5(op 6bits)+17(rs,5bits)+18(rt 5bits)+25(地址,16bits)
    其中5表明它是bne,18是$s2,17是$s1,25是offset
     
    7>slt set on less than
    slt $s1,$s2,$3 #i($s2<$s3)$s1=1;else $s1=0
    格式
    0(op 6bits)+18(rs 5bits)+19(rt 5bits)+17(rd 5bits)+0(shamt 5bits)+42(funct 6bits)
    其中18、19、17分别代替$s2、$3、$1,op和funct的0/42表明这是slt运算
     
    8>j jump
    j 2500 #pc=10000
    格式
    2(op 6bits)+address(26bits)
    可见跳转只能在2^26x4=256M范围内跳转
     
    9>jr jump register
    jr $ra #pc=$ra
    格式
    0(op 6bits)+31(rs 5bits)+0(rt 5bits)+0(rd 5bits)+0(shamt 5bits)+8(funct 6bits)
    31就是$ra,0/8表明它是jr指令,这个指令可以在4G空间内跳转
     
    10>jal jump and link
    jal 2500 #$ra=pc+4;goto 10000
    格式
    3(op 6bits)+address(26bits)
    用在程序调用的时候
    也有8>一样的限制
     
    可见MIPS指令有三种格式
    R format如add,sub,slt,jr
    I format如lw,sw,beq,bne
    J format如j,jal
     
    但是它们都是32bits,这个简单性有助于其他功能的实现。
    同时这个简单性也限制了一些东西:
    譬如lw,sw中的offset只能有16bit
    j与jal中的地址只有26bit(好在jr可以4G内跳转,^_^)
    不过,这些限制是可以通过其他的指令协助来克服的,
    也就是说MIPS尽量让指令集(hardware)简单一些,而让compiler(software)来干更多的事情
     
     
     
     
     
     

    相关公司

    ASIC:
    电信级
    TranSwitch
    1/4/2006,TranSwitch公司今天宣布中兴通讯采用他们的Envoy(TM)-CE2以太网控制芯片应用于中兴ZXR-10 电信级IP/MPLS路由器的快速以太网接口卡上。这种电信级路由器主要针对骨干因特网,城域网等市场应用。中兴通讯表示他们需要可靠的电信级的以太网控制器,TranSwitch的产品很好地通过SPI-3接口配合了中兴的用户数据包转发ASIC芯片。TranSwitch表示他们的Envoy-CE2和Envoy-CE4产品从2004年3月推出以来已经在十多家公司的OEM产品中获得应用。这次应的中兴的选型也是Envoy系列产品里程碑式的成就。Envoy-CE4芯片内含4个MAC, Envoy-CE2则包含2个MAC.
     
    Greenfield
     
    盛科网络
     
     
    企业级:
    Broadcom
    http://www.broadcom.com/
    Marvell
    南山之桥
    SandBurst(bought by Broadcom) Metro ethernet
    SiNett(Wireless/wireline unified enterprise switching)
    Wintegra
    Xelerated
    Bay Microsystems(WAN IP routing)
    Hifn(Security,Metro Ethernet)
     
     
    协议栈
    LVL7 http://www.lvl7.com/ 主要是二层
    DataConnection
    FutureSoft
    NextHop
     
    NSD:
     
     
    January 07

    一段话

     
                 Your presence is a gift to the world,

        You're unique and one of a kind.
      
        Your life can be what you want it to be -
      
            Take it one day at a time.
      
        Count your blessings, not your troubles,
      
        And you'll make it through what comes along.
      
        Within you are so many answers,
      
        Understand, have courage, be strong.
      
        Don't put limits on yourself,
      
        Your dreams are waiting to be realized.
      
        Don't leave your important decisions to chance -
      
        Reach for your peak, your goal, and your prize.
      
        Nothing wastes more energy than worrying -
      
        The longer a problem is carried, the heavier it gets.
      
        Don't take things too seriously -
      
        Live a life of serenity, not a life of regrets.
      
        Remember that a little love goes a long way -
      
        Remember that a lot goes forever.
      
        Remember that friendship is a wise investment,
      
        Life's treasures are people... together.
      
        Have health and hope and happiness,
      
        Take the time to wish on a star.
      
        And don't ever forget for even a day...
      
        How very special YOU are!
      
    January 06

    印度、韩国、中国

    Greenfield来的支持Smita告诉我了印度的一些情况。
    在印度,刚毕业的初级Sw engr月薪3K RMB,三年经验的6-8KRMB,5年的10K,10年以上就depend on那个人了。看来跟中国差不多。
    我很好奇的问了班加罗尔的房价,她说一个130平米的公寓大概60万RMB,恩,比上海便宜很多了。而且土地是自由买卖的。
    我又问她,我在报纸上看到印度的医院免费,她瞪大眼睛说,“谁说的?只是很少的给穷人开的医院是免费的”,^_^,我们的报纸看来不够准确啊。
    她还告诉我,public sector解雇员工是要向政府报告的,而私企和外企则不必。看来即使华尔街日报的报道也不完全真实。
    至于工会,印度有组织工会的自由,不过也有很多企业没有工会。
    印度是一个部落联盟,各个地方文化不一样,非常有趣,Smita鼓动我去India Travel.
    看来印度确实有比中国先进的地方,中国近10多年的发展过分损害了穷人的利益,唯金钱至上。当然了,印度也不是某些报纸上所说,好的不得了,我们也不应该妄自菲薄。
     
     
    今天晚上跟李瑞在人民广场烧烤,他说最近这两天很郁闷:他要去韩国签证看他GF,韩国政府要求至少5万RMB的存款,外加在上海有80平米的住宅。他感觉受到了莫大的侮辱。我开玩笑对他说,那一天中国的汽车公司干过了韩国现代,就没有这种侮辱了。他问多久,我说20年吧。是啊,我们应该有自信。在通信设备行业实际上我们已经比台湾、韩国、日本强了,其他的行业为什么不能比他们强呢?
     
     
    以上是精神胜利法,现实中的痛苦还要通过意志来战胜,我们公司的项目现在到了关键时刻,我成了Bottleneck,佛祖保佑我度过难关。
     
    January 01

    有意义的新年

    2005年的最后一天和2006年的第一天,我参加了ctrip上的一个活动,若干单身男女去浙江武义县泡温泉,顺便爬了两座小山。
    这是本人第一此泡温泉,身体泡在热水里,脑袋露在寒冷的空气里,呼吸着新鲜的室外空气,还是比较有趣。以后争取每年冬天过来泡上两次。
    武义的山跟华东地区其他的山没有太大差别:不高,植被丰富,空气新鲜,厌倦了上海这种大城市生活的人可以过来休息一下。不过武义离上海太远,时间金钱的开销上不如临安。
    武义的经济在浙江算中等吧,不如周边的永康和义乌。导游小姐告诉我,以前的永康和义乌很穷,当地老百姓为了活命,在异乡走街串巷:义乌的老百姓拿着波浪鼓,叫卖各种小玩意儿,后来这批人发展起了义乌的小商品;永康的老百姓出外打铁,发现机会,后来发展起了永康的五金。当地有一种说法:波浪鼓摇出一个小商品市场,打铁打出一个五金城。现在浙江的人的触角已经伸向全世界:在高速公路旁边看到不少项联邦快递这种速递公司的广告。相比之下,武义的经济以前还是不错的,所以老百姓比较保守,现在只好给义乌人打工了。难道这种草根务实的精神就是一种企业家精神,我也需要这种精神吧。当然,我还有一个问题不明白:浙江的商人大多是农民,当年是因为无法忍受贫穷被迫闯出一条路来,但是当他们有了几百万、几千万的家产时候,他们为什么还有动力继续做下去呢?如果是我,早就花天酒地、吃喝嫖赌了。
    昨天晚上在武义县城休息。那是一座安静的小城市,一条河流缓缓的流过市中心,当地老百姓还算安详,这也是一处养老之地啊。晚上闲逛,看到肯德鸡、大中电器,甚至还有“良子足浴”武义分店,商业渗透力真厉害。
    今天早上看了一个保存完好的清代村落---郭洞,我在里面见到两个80岁的老人,老人们很健康,眼睛比我们这些大城市来的年轻人还有神采,其中一个老人正在拿着扫把扫地替村里工作,他告诉我:村里每个月给他们发100元,另外如果干活的话还有350元。恩,不错。of course,村里的年轻人都出外闯天下去了。郭洞里比较有趣的是一个祠堂,里面有戏楼、各种匾,这些匾无非是村里谁中了科举后,阿谀好事之徒的马屁匾,以及当地官员对郭洞的表彰匾。祠堂居然还有棺材,据说以前整个家族的棺材都放在这里,恩,只有经常看到死亡,我们的内心才能够平静顺从。这个祠堂里有着古代中国人的精神信仰,包含了权力、荣耀、尊严、秩序、死亡等因素,莫非这种祠堂就是中国式的“教堂”?怪不得当年老毛要除四旧,废祠堂,烧家谱。在村子里,我们甚至还看到了一个贞节牌坊,甚为新鲜。对于今天的郭洞人而言,家族观念还是很重的,他们的祭祖都是整个家族一起祭的。同行的人告诉我,这里的建筑是徽派风格,就是屋檐两端上翘。
    同行的有13个女孩子(女人),大部分很无趣,说着上海话,眼神空洞,年纪轻轻的化妆甚浓,跟他们说话根本就说不到一起,莫非大城市生活对人真的很有摧残?只有两个女孩子我有点兴趣,要来了电话号码。其实我对女人有三个要求:1善良 2对生活要有热情 3不能太丑。相由心生,一看眼睛就可以判断前两条。其他的譬喻经济条件、文化档次就是一个技术因素了,范围可以变化。
    整体而言,这次旅行还是很开心的,认识到几个比较有趣的人,看到了山村下那些历史的遗迹。