Spaces:
Sleeping
Sleeping
File size: 795 Bytes
e9bc512 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class PCIeInterface:
def __init__(self, version='4.0', lanes=4, max_gbps=15):
self.version = version
self.lanes = lanes
self.max_gbps = max_gbps # GB/s
self.latency_us = 2 # microseconds, typical for PCIe 4.0
def transfer_time(self, size_bytes):
# Calculate time to transfer size_bytes at max_gbps (in seconds)
gb = size_bytes / 1e9
time_s = gb / self.max_gbps
return time_s
def simulate_transfer(self, size_bytes, direction='write'):
t = self.transfer_time(size_bytes)
print(f"[PCIe] {direction.title()} {size_bytes/1e6:.2f} MB over PCIe {self.version} x{self.lanes} at {self.max_gbps} GB/s: {t*1e3:.3f} ms + {self.latency_us} us latency")
return t + self.latency_us / 1e6
|