高通吧 关注:176,730贴子:4,444,832

睡不着,想聊聊BP

只看楼主收藏回复

晚上翻笔记发现了自己一堆BP的idea,但又不知道从何说起……


IP属地:陕西来自iPhone客户端1楼2025-01-26 02:33回复


    IP属地:中国香港来自iPhone客户端2楼2025-01-26 04:23
    回复
      教我


      IP属地:上海来自iPhone客户端3楼2025-01-26 05:34
      回复
        睡着了?


        IP属地:北京来自Android客户端4楼2025-01-26 07:59
        回复
          起床啦


          IP属地:江苏来自iPhone客户端5楼2025-01-26 08:51
          回复
            楼主下面没了


            IP属地:上海来自Android客户端6楼2025-01-26 09:31
            回复
              《睡不着》


              IP属地:日本来自iPhone客户端7楼2025-01-26 09:40
              回复
                坏了,看睡着了,晚上我想想从哪讲吧


                IP属地:陕西来自iPhone客户端8楼2025-01-26 10:41
                收起回复
                  bp和cmos哪个更难


                  IP属地:四川来自手机贴吧9楼2025-01-26 10:49
                  收起回复


                    IP属地:美国来自iPhone客户端10楼2025-01-26 10:54
                    回复


                      IP属地:福建来自Android客户端11楼2025-01-26 11:08
                      回复
                        想到啥说啥吧,首先就是2-taken BTB,顾名思义:就是1cycle predicts两个jump的branch。其意义就是提高fetch的efficiency,减少Front-end的bubble。然后你可能好奇BTB是啥,BTB就是(Branch Target Buffer):存储分支指令的目标地址和必要的预测信息,以在下一次遇到同一分支指令时能迅速给出跳转位置。你可以理解为BPU的cache。这个2-taken目前X86俩兄弟早都做了,玩的很花,intel是在32-entry内实现3-4个taken,AMD是在1k-1.5k-entry的L0 BTB的特殊情况下实现2-taken。想法挺好的,就是得拿register去堆,area efficiency不咋滴。ARM这边,对于Apple及Apple类似物来说,目前都还没做,毕竟做2-taken,你得能把timing能closure上。不仅如此你还需要考虑logic complex,and 你需要去改pipeline,(我好奇Nuvia家Apple类似物,想去做server,连2-taken都没做,是能力不行吗),最后就是前面提到的,如果需要large capacity的2-taken BTB,你可能还得用register,那么对area也是考验。ARM公版也是做了2-taken,毕竟ARM公版要考虑server,做2-taken可以适应server的high instructions stress的environment。我记得是在512-enrty的L0 BTB里做的2-taken。WAWEI TSV,这个倒还没做,不清楚为啥,可能和工艺有关吧。然后隔壁RV的香山,MIPS类似物(龙芯那ISA)这俩我记得好像有吧,没印象了,也没关注。


                        IP属地:陕西来自iPhone客户端12楼2025-01-26 16:57
                        回复
                          然后就是对于Apple,对于Apple的arch来说,我认为如果还需要加宽的话,2-taken是有一定必要性,虽然没啥强联系,但是吧,做上总有好处。至于Apple类似物那家,emm,good luck。


                          IP属地:陕西来自iPhone客户端13楼2025-01-26 17:03
                          收起回复
                            不仅是decode的width,如果需要扩大fetch width,2taken就很有必要了,毕竟wider fetch可能会bring many branch instructions,如果使用traditional BTB design,那么就会因为BTB要in-order去execute predict产生stall以此产生的bubble和latency就太大,没有办法去很好的提高wider fetch的use rate。并且,现代的arch,对于pipeline都是更deep or long的,那么如果遇到Branch miss带来的pipeline flush,那么traditional design的代价就很大,会产生很大的bubble,2-taken可以很好的缩减bubble。并且现代的OoO architect也需要你的BP和fetch更加的dynamic。


                            IP属地:陕西来自iPhone客户端14楼2025-01-26 17:24
                            回复
                              没人?


                              IP属地:浙江来自Android客户端16楼2025-01-31 15:12
                              收起回复