[暑期实习] 微信技术架构 后端三面面经
时长约40~50min
根据本机架构做矩阵乘法分块优化,没撕出来,20多min
1. 聊高性能计算与云计算课程内容。
2. 二维数组按行读快还是按列读快,为啥按行读快。
3. 如何优化矩阵乘法。
4. 读写数据的时候,cpu、cache、内存有什么交互。
5. cpu不会把刚写到cache的数据立刻写回到内存,那么对于多核cpu,一个刚写完一个变量,另一个要取变量,而这个变量的最新版本在前者的cache,内存里还没有,那怎么获取最新数据(保持一致性)。
答案是在cpu之间有总线,后者可以走总线直接访问到前者的cache。
根据本机架构做矩阵乘法分块优化,没撕出来,20多min
1. 聊高性能计算与云计算课程内容。
2. 二维数组按行读快还是按列读快,为啥按行读快。
3. 如何优化矩阵乘法。
4. 读写数据的时候,cpu、cache、内存有什么交互。
5. cpu不会把刚写到cache的数据立刻写回到内存,那么对于多核cpu,一个刚写完一个变量,另一个要取变量,而这个变量的最新版本在前者的cache,内存里还没有,那怎么获取最新数据(保持一致性)。
答案是在cpu之间有总线,后者可以走总线直接访问到前者的cache。
全部评论
关于问题5 可能出现了一些问题 这是我问GPT后得到的答案:
在多处理器系统中(如对称多处理系统 SMP 或分布式内存架构),处理器之间不能直接访问彼此的缓存,主要是因为以下几个原因:
缓存一致性:
每个处理器都有自己的缓存,这些缓存中存储的数据可能是不一致的。为了确保数据的一致性,需要有缓存一致性协议来管理多个处理器之间的数据更新。
如果允许一个处理器直接访问另一个处理器的缓存,那么可能会引入数据一致性问题,因为每个处理器可能看到的是不同的数据版本。
性能问题:
直接访问其他处理器的缓存通常比访问本地内存更慢。这是因为缓存访问依赖于高速缓存命中率,而直接跨处理器访问会增加延迟。
为了提高性能,系统设计时会尽量让每个处理器访问自己的缓存和本地内存。
架构限制:
多处理器系统的内存架构通常是基于节点的,每个节点包含一个或多个处理器以及本地内存。不同节点之间的通信通过互联网络进行,而不是直接访问对方的缓存。
可扩展性:
在大规模并行处理系统中,如果允许直接访问其他处理器的缓存,那么随着处理器数量的增加,缓存访问的复杂性和开销也会急剧增加,这会严重限制系统的可扩展性。
为了协调多处理器系统中的数据访问,并解决上述问题,现代多处理器系统使用了多种缓存一致性协议,例如 MESI (Modified, Exclusive, Shared, Invalid) 协议或其他变种。这些协议确保了所有处理器看到的内存是一致的,并且能够有效地管理缓存数据的状态。
也可以看一下这篇文章 https://cloud.tencent.com/developer/ask/sof/112244443
相关推荐