问题标签 [pipelining]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 交换变量(C++,处理器级)
我想交换两个变量。我想通过管道使用写后读危险来完成它,这对我有利。
管道:
我如何告诉编译器在没有自动锁定和警告标志的情况下执行此操作(并且确切地执行此操作)?你能推荐任何文献/关键词吗?
眼镜:
-> 目标:支持多站(超过 4 个)流水线的现代架构
-> 这与任何特定的“问题”无关。只是为了科学。
目前的障碍:
- 如果您知道如何忽略数据危害,请分享。
cpu-architecture - 使用 5 级流水线 CPU 的给定指令序列所需的时钟周期数是多少?
5 级流水线 CPU 具有以下阶段序列:
IF——从指令存储器中取指令。
RD——指令解码和寄存器读取。
EX – 执行:用于数据和地址计算的 ALU 操作。
MA – 数据存储器访问 – 对于写访问,使用在 RD 状态下读取的寄存器。
WB——寄存器回写。
考虑以下指令序列:
让每个阶段占用一个时钟周期。从 I1 的取指开始,完成上述指令序列所需的时钟周期数是多少?
所以这是我的解决方案。
通过这种方式,我总共获得了 13 个周期。我假设由于问题中没有明确提到操作数转发。因此注册将仅在 WB 阶段后可用。但选项如下:
- A. 8
- B. 10
- C. 12
- D. 15
architecture - 什么是流水线?它如何提高执行速度?
我相信,如果它困扰着你,那么任何问题都是愚蠢的。我有这个关于管道衬里的问题?
什么是管道内衬?
理论说:“使用流水线,CPU 在第一条指令完成之前开始执行第二条指令。流水线导致更快的处理,因为 CPU 不必等待一条指令完成机器周期。”
我的问题是考虑我正在使用单处理器系统,一次只能执行一条指令,当我的 CPU 忙时,如何同时执行获取下一条指令的操作?如果我缺乏概念上的清晰度,请给我一些启发。如果有单独的硬件可以同时处理,那是什么?请解释。
http - HTTP over TCP 在更改目录时创建新连接
我正在使用一个程序来监视浏览器的活动,当我访问一个站点时,它通过 TCP 连接发出 HTTP 请求,然后我从服务器的根目录获取 HTML 文件,然后它获取其中的图像对象HTML 文件,但它们位于不同的目录中,因此它创建了一个新连接......这是 HTTP/1.1 在流水线时所做的吗?还是出于其他原因这样做?我一直在阅读 RFC 2616,它没有提到它为什么会创建这些新连接。
redis - redis 分片、流水线和往返
假设在您的 Web 应用程序中,您需要执行许多 redis 调用来呈现页面,例如获取一堆用户哈希。为了加快速度,您可以将您的 redis 命令包装在 MULTI/EXEC 部分中,从而使用流水线,这样您就可以避免多次往返。但是你也想分片你的数据,因为你有很多数据和/或你想分发写入。然后流水线将不起作用,因为不同的键可能存在于不同的节点上,除非您清楚地了解应用程序的数据布局和基于角色而不是使用散列函数的分片。那么,在不同服务器之间分片数据的最佳实践是什么,而不会因为要联系许多服务器来完成“概念上唯一”而对性能造成太大影响 工作?我相信答案取决于一个正在开发的 Web 应用程序,我最终会运行一些测试,但了解其他人如何应对我提到的权衡取舍会很有帮助。
function - 通过 powershell 中的多个函数进行流水线化
用户启动一个名为 wrapper.ps1 的脚本
然后我用
然后我有一个function1,例如:
$blah# 是简单的字符串。问题是我如何通过 wrapper.ps1 管道到 function1?我想这样称呼这个脚本:
wrapper.ps1 命令1 文件名|ft blah1,blah3
http - 编写多个 http 响应是否有任何限制?
我正在用 netty 构建一个HTTP 代理,它支持 HTTP 流水线。因此,我HttpRequest
在单个通道上接收到多个对象并获得了匹配的HttpResponse
对象。写入的顺序HttpResponse
与我得到的相同HttpRequest
。如果 aHttpResponse
被写入,下一个将在HttpProxyHandler
收到writeComplete
事件时写入。
管道应该很方便:
关于这个问题,只有写入调用的顺序很重要,但要确保我构建了另一个 Handler ( HttpResponseWriteDelayHandler
),它会抑制writeComplete
事件,直到写入整个响应。
为了测试这一点,我在 Firefox 中启用network.http.proxy.pipelining
并访问了一个包含许多图像和连接的页面(一个新闻页面)。问题是,浏览器没有收到一些响应,尽管代理的日志认为它们已成功发送。
我有一些发现:
- 仅当从代理到服务器的连接比从代理到浏览器的连接快时才会出现此问题。
- 在该连接上发送更大的图像(例如 20kB)后,问题更常发生
- 如果仅发送响应,则不会发生此问题
304 - Not Modified
(刷新页面考虑浏览器缓存) - 设置
bootstrap.setOption("sendBufferSize", 1048576);
或以上没有帮助 writeComplete
在发送事件之前休眠一个取决于响应正文大小的时间帧HttpResponseWriteDelayHandler
可以解决问题,但这是一个非常糟糕的解决方案。
ruby - Quova TCP 保活?流水线?
我的一位开发人员报告说,与 Quova 服务器的连接速率已成为瓶颈。他报告说,他在我们的 Ruby 代码中设置 TCP keepalive 选项的尝试似乎没有得到认可。
我还没有看过我们的代码;但我很好奇这里是否有人可以提供建议,基于供应商的示例 Ruby 请求代码,关于如何重构它以在每个连接上提出许多问题(或以其他方式消除/绕过明显的瓶颈)。
我痛苦地意识到我可能在这里错过了正确的关键字甚至整个概念。只要您将我指向 T(右)F-ing M,RTFM 就可以了。
http - iOS6中是否修改了“Http管道”?
iOS5 中的“Http 管道”可能会导致一些问题,例如在 Safari 中渲染网页时切换图像。一些网站已经报告了这个问题,比如这个问题,问题的根源是管道“使浏览器能够在接收响应之前在同一个连接上发送多个 HTTP 请求”。
我的问题是:这在 iOS6 中解决或改变了吗?我找不到这样的信息。