Questions tagged «computer-architecture»

有关计算机硬件的组织和设计的问题。

1
端到端原则可以形式化吗?
在1990年代后期,当我还在读研究生时, JH Saltzer;DP芦苇; DD Clark:系统设计中的端到端参数。ACM Trans。计算 Syst。2(4):277-288,1984.DOI = 10.1145 / 357401.357402 在每所大学的每个操作系统课程中,几乎都需要阅读该书,而且它似乎仍然是互联网设计的主要指导原则之一。(例如:参见J Kempf,R Austein编辑)和IAB,“ 中间的兴起和端对端的未来:对Internet体系结构演进的思考 ”,RFC 3724,2004年3月。 ) 端到端原理说明(Saltzer等人,1984): [如果]仅在站在通信系统端点的应用程序的知识和帮助下,才能完全正确地实现所讨论的功能,...,前提是所质疑的功能不是通信系统本身的功能可能。[尽管]有时,通信系统提供的功能的不完整版本可能有助于提高性能。 或更简单地(摘自摘要): 端到端的论点表明,与以较低级别提供功能相比,放置在系统较低级别上的功能可能是多余的或价值很小。 但是以我自己的经验(在计算机体系结构中,而不是在互联网体系结构中)应用端到端原理并没有取得什么成功。由于该原则被说成是“诗”(即,英语散文中有许多数学上没有定义的术语),因此很容易自欺欺人地认为:“所讨论的功能只有通过以下方式才能完全正确地实现:应用程序的知识和帮助。” 但是什么是“所讨论的功能”,更不用说应用程序的“知识和帮助”了? 示例:片上网络(与Internet不同)不允许丢弃数据包,但是缓冲非常有限,因此您需要采取某种措施来避免死锁或从死锁中恢复。另一方面,应用程序也需要使其自身无死锁,对吗?因此,我可能会以为我应该使常见情况(无死锁)变快,并在应用程序上避免死锁。实际上,这就是我们在Alewife和Fugu上尝试过的方法(Mackenzie等人,“ 利用两箱式邮件传递以进行快速保护的消息传递”,《国际Symp高性能复合拱门》(HPCA-4):231-242, 1998年。或约翰·库比亚托维奇(John Kubiatowicz)的论文。“它”有效“(通过在缓冲区已满时使互连中断处理器,并通过软件缓冲使OS扩展),但我在学术界或行业中都没有见过任何人(包括我们中的任何人) HPCA论文)竞相尝试复制该想法。因此,显然,避免网络中的死锁与避免应用程序级死锁是不同的“问题功能”,否则端到端原理是错误的。 可以将端到端原理从“诗”转变为定理吗?或者至少可以用计算机架构师可以理解的术语来表述?

2
现代计算机的理论最小寄存器数?
我在我的本科课程中学习了关于编译器的课程,其中我们编写了一个编译器,该编译器将类似于Java的玩具语言的源程序编译为玩具汇编语言(为此我们提供了解释器)。在项目中,我们对与“真正的”本机可执行文件密切相关的目标计算机做出了一些假设,包括: 运行时堆栈,由专用堆栈指针(“ SP”)寄存器跟踪 用于动态对象分配的堆,由专用堆指针(“ HP”)寄存器跟踪 专用程序计数器寄存器(“ PC”) 目标机器有16个寄存器 对数据的操作(与例如跳转相反)是寄存器到寄存器的操作 当我们到达使用寄存器分配作为优化的单元时,我感到很奇怪:这种机器的理论最小寄存器数量是多少?通过我们的假设,您可以看到我们在编译器中使用了五个寄存器(SP,HP,PC,另外两个用作二进制操作的存储)。尽管诸如寄存器分配之类的优化当然可以利用更多的寄存器,但有没有办法在保持堆栈结构(如堆栈和堆)的同时减少使用?我想通过寄存器寻址(寄存器到寄存器操作)我们至少需要两个寄存器,但是我们需要两个以上吗?

1
为什么在GPU上进行比较如此昂贵?
在尝试提高碰撞检测类的性能时,我发现在gpu上花费了大约80%的时间,它花费在if / else条件上只是试图弄清楚应该循环通过的存储桶的界限。 更确切地说: 每个线程都有一个ID,通过该ID从内存中获取其三角形(每个3个整数),并通过这3个线程获取其顶点(每个3个浮点)。 然后将顶点转换为整数网格点(当前为8x8x8),并将其转换为该网格上的三角形边界 要将3个点转换为边界,它会在每个点中找到每个维度的最小值/最大值 由于我使用的编程语言缺少minmax内在函数,因此我自己做了一个代码,看起来像这样: procedure MinMax(a, b, c): local min, max if a > b: max = a min = b else: max = b min = a if c > max: max = c else: if c < min: min = c return (min, max) …

3
为什么键盘回声会涉及CPU?
我目前正在学习计算机科学考试,并且遇到了一个让我有些困惑的概念。 当您在键盘上键入一个键时,一个ASCII字符将被发送到CPU。接收到此字符后,CPU将相同的字符输出到屏幕。此过程称为回声。为什么不让CPU参与其中,为什么我们不简单地在键盘/屏幕单元内完成此回显过程,以便CPU可以自由地做其他有用的工作? 现在,凭直觉,我觉得这是因为没有定义的键盘/屏幕单元,而CPU是负责通过互连网络在屏幕和键盘之间进行通信的设备。但是,我感觉提到键盘/屏幕单元这一事实可能意味着我错过了一个重要的概念。是这样吗 为什么我们将CPU包含在回声过程中?

1
什么是遗忘的RAM,它如何工作?
有人可以向我解释什么是完全遗忘的RAM吗? 我发现以下解释对我来说很清楚,但我想对技术方面有所了解: 加密并不总是足以确保隐私。如果攻击者可以观察到您对加密存储的访问方式,他们仍然可以了解有关您的应用程序运行情况的敏感信息。遗忘的RAM通过在访问内存时不断改组内存来解决此问题。从而完全隐藏正在访问的数据或什至是先前访问的时间。


4
操作系统上下文中的中断是什么意思?
我决定阅读操作系统概念在整个夏天 Silberschatz的,Galvin Gagne(第8版)。我遇到了一个使我感到困惑的话题-中断及其在操作系统中的作用。 文字说,操作系统将开始第一个过程,例如“ init”,然后等待“事件”发生,该事件通常由中断来发出信号。文本还说,中断可以来自硬件或软件。更详细地说,这是如何工作的?操作系统是由中断驱动的吗? 我只是在寻找一些大的了解。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.