摘要: 高等数字集成电路课程作业(一) 高等数字集成电路课程作业的记录,都是很简单的toy design,只有VCS,Verdi和Design Compiler的脚本以及约束可供参考。 阅读全文
posted @ 2024-11-10 22:59 Astron_fjh 阅读(240) 评论(0) 推荐(0)
摘要: DDCA —— 缓存(Cache):缓存体系结构、缓存操作 Digital Design and Computer Architecture Lecture22&23的学习笔记,介绍缓存体系结构和一些缓存操作,及优化缓存的策略。 阅读全文
posted @ 2024-11-09 13:04 Astron_fjh 阅读(1259) 评论(3) 推荐(3)
摘要: CUDA 编程学习 (5)——内存访问性能 现代DRAM结构由于核心速度限制,通过burst模式和多Banks结构提高带宽。CUDA中,warp级聚合内存访问减少DRAM请求,提升效率。分块访问模式通过将数据加载到共享内存中,降低全局内存访问频率,进一步优化CUDA内存访问性能。 阅读全文
posted @ 2024-11-01 01:31 Astron_fjh 阅读(166) 评论(0) 推荐(0)
摘要: IIC通信协议详解 & PCF8591应用(Verilog实现) 详细介绍了IIC通信协议并给出如何使用PCF8591,用verilog实现。 阅读全文
posted @ 2024-10-28 16:02 Astron_fjh 阅读(366) 评论(0) 推荐(0)
摘要: 使用PYNQ生成PWM波控制舵机/步进电机/机械臂 使用PYNQ生成PWM波控制舵机/步进电机/机械臂。 阅读全文
posted @ 2024-10-28 15:53 Astron_fjh 阅读(222) 评论(0) 推荐(0)
摘要: CUDA编程学习 (4)——thread执行效率 这篇文章探讨了CUDA编程中的warp和SIMD概念,以及控制分歧对性能的影响。warp是CUDA中线程调度的基本单位,每个warp包含32个线程,以SIMD方式执行相同指令。控制分歧发生在同一warp中线程因不同控制路径而导致执行效率下降。文章通过向量加法示例分析了控制分歧的影响,表明只有在特定情况下(如线程索引超出范围)才会产生控制分歧,其对性能影响通常较小。总体而言,合理设计数据结构和算法可以降低控制分歧,提升CUDA程序的性能。 阅读全文
posted @ 2024-10-27 22:52 Astron_fjh 阅读(178) 评论(0) 推荐(0)
摘要: CUDA编程学习 (3)——内存和数据定位 这段文字详细介绍了CUDA编程中的内存管理和数据定位。首先,强调了GPU的内存带宽与浮点计算能力之间的关系,指出性能瓶颈主要来源于内存访问的限制。接着,通过矩阵乘法的示例,展示了如何利用共享内存提高性能,介绍了内存类型(如全局内存、常量内存、寄存器和共享内存)及其访问方式。此外,讨论了Tiling技术,通过将数据划分为小块来优化内存访问。Tiling的有效实现需要线程的同步,以确保在加载和计算阶段的正确执行。最后,文中提供了处理任意大小矩阵的方法,说明如何在矩阵乘法中避免无效计算并管理边界条件。 阅读全文
posted @ 2024-10-27 22:48 Astron_fjh 阅读(203) 评论(0) 推荐(0)
摘要: CUDA编程学习 (2)——CUDA并行性模型 这篇文章深入探讨了CUDA编程中的并行性模型,重点介绍了基于kernel的单指令多数据(SPMD)编程。首先,通过向量加法示例,展示了CUDA内核函数的编写与调用,并解释了__global__、__device__和__host__的不同用法。接着,文章扩展到多维网格配置,演示如何处理图像数据,如RGB转灰度和图像模糊。最后,讨论了线程调度及其透明扩展性,强调了warp执行和GPU资源管理。 阅读全文
posted @ 2024-10-26 11:46 Astron_fjh 阅读(201) 评论(0) 推荐(0)
摘要: CUDA编程学习 (1)——CUDA C介绍 这篇文章是关于CUDA编程的基础介绍,主要聚焦于CUDA C的概念与内存管理。文章首先阐明了CUDA的异构计算模型,区分了CPU(host)和GPU(device)的角色,并介绍了它们之间的数据移动和通信机制。接着,详细说明了CUDA程序的执行流程,包括内存分配、数据传输和核函数的调用。 阅读全文
posted @ 2024-10-26 11:44 Astron_fjh 阅读(220) 评论(0) 推荐(0)